`
bigfang
  • 浏览: 40263 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

异常处理的整理

阅读更多
    其实,异常很久以前就遇到了,一直没整理。对异常的理解还需提高。

    写程序和生活中的情况很相似,会遇到一些异常情况。有些异常能预料到,在程序执行中可能突然发生,可以防患于未然;有些则无法预料。

以下是部分异常继承:


     1.Exception:程序本身可以处理的异常。发生异常,则可以处理。

     2.Error:违反基本原则,由Java虚拟机抛出。如内存空间不足OutofMemory,Java虚拟机的方法调用栈溢出StackOutofMemoryError。出现异常,终止程序执行。


Exception:可分为运行时异常和受检查异常。

   1.1RuntimeException:运行时异常。编译时,不需强制检查异常。用户可根据特定问题创建相关的运行时异常类。一般由于代码错误,执行了错误的操作,引起的异常。

   1.2除RuntimeException以及它的子类,其他的Exception类及其子类都属于受检查异常(Checked Exception)。


               处里异常,有两种方法。
(1)try……catch捕获并处理异常
try {
//可能发生异常的语句

}catch(){
//捕捉并处理异常,中断try中的正常流程,

}finally{
//无论是否有异常,总是会执行的语句,释放被占用的相关资源

}
finally中的语句放try……catch后面,某些情况也能执行,但如果catch中继续抛出异常,则导致catch所在的方法异常终止,就不执行try……catch后面的语句了。


(2)throws,方法的声明处通过throws语句声明抛出异常。
这个方法没有能力处理异常,所以抛出异常,交给上一层方法处理。

    throws 与 throw区别:
throws:在声明方法处,方法 throws 异常类名。
throw:语句执行中使用throw。对象必须为java.lang.Throwable类或其子类的实例。

public static void main(String[] args) {
		testException te=new testException();
		te.testArray();
	}
	
	public void testArray(){
		int[] b=new int[61862000];//超过虚拟机分配内存
		System.out.println("整型数组创建成功");
	}

java.lang.OutOfMemoryError: Java heap space

   属于Error异常类,定义的数组大小超过了虚拟机总共可分配的内存。

public void testNullPointer(){
		String ss=null;
		ss.getBytes();
		System.out.println("调用成功");
	}
java.lang.NullPointerException

RuntimeException运行异常,空指针异常,没有指向指定的内存单元,即没有创建对象。这目前在程序中比较常见。

public static void main(String[] args) {
		testException te=new testException();
		try{
			te.throwAgain();
		}catch(Exception ef){
			ef.printStackTrace();
			System.out.println("处理异常了");
		}
		
	}
	
	public void throwAgain() throws Exception{
		try{
			testThrow(-5);
		}catch(Exception ef){
			ef.printStackTrace();//无此句,则执行后,不显示出现异常的地方
			throw new Exception("此方法无法处理,继续throw给上层");
		}finally{
			System.out.println("finally中语句总是执行");
		}
                System.out.println("finally之后的语句执行了");
	}
	//创建5个单元的数组
	public void testThrow(int num){
		if (num<0){
			throw new IllegalArgumentException("个数不能小于0");
		}
		int a[]=new int [5];
		System.out.println("创建数组成功");
		
	}
   若throw,则后面的语句就不执行了,回到上一层调用的函数。testThrow,回到throwAgain,然后处理上一个函数抛出的异常,由于throwAgain无法处理异常,所以继续上抛异常,此时,try……catch之后的语句就不执行了,最后在main函数里处理了。


由于处理异常,目前使用的不多,所以,以下几句以后慢慢体会了。

    1.出现异常,使用try……catch时,虚拟机搜索方法调用栈来寻找异常处理代码块,如果抛出异常的代码块和处理异常的代码块相隔很多层,找的时间就多了。
    2.避免过于庞大的try代码块。代码块越大,出现异常的情况就越多,分析发生异常的原因就越困难。
    3.catch()中指定具体的异常类型。因为不同的异常执行不同的处理。

  • 大小: 99.6 KB
分享到:
评论

相关推荐

    Spring Boot 全局异常处理整理.docx

    Spring Boot 全局异常处理整理

    PHP中异常处理的一些方法整理

    传统的异常处理主要围绕着单一异常类Exception进行。在PHP 5.2版本中,异常处理相对单一,而从PHP 5.3版本开始,引入了新的特性,包括嵌套异常处理和SPL(Standard PHP Library,标准PHP库)中的异常类型扩展。 ...

    PHP5面向对象05异常处理[整理].pdf

    在PHP5中,面向对象编程的一个重要特性是异常处理,它提供了一种更优雅、更规范的方式来处理程序运行过程中...正确地使用异常处理,不仅有助于调试,还能确保程序在遇到问题时优雅地退出,避免数据丢失或用户界面崩溃。

    实验3-磁异常处理与转换 实验报告1

    《应用地磁学》实验报告涉及的是磁异常处理与转换这一主题,主要目的是通过实际操作加深学生对磁性体磁异常处理转换原理的理解,并通过Matlab编程锻炼他们的数据处理技能。实验内容包括对不同大小和埋深的球体或水平...

    第8章异常处理与多线程[整理].pdf

    Java异常处理是编程中不可或缺的一部分,它用于处理程序运行时可能出现的错误。异常是程序在执行期间遇到的问题,可能导致程序终止。Java中的异常分为两类:错误(Error)和违例(Exception)。 错误(Error)是JVM...

    深入探索 高效的Java异常处理框架

    什么时间使用runtimeException,什么时间使用Exception,大家有没有被困扰到?经整理,JAVA异常处理框架,以及如何构造自己的异常体系,讲得比较详细,值得一看。

    常用类与异常处理

    常用类与异常处理,整理的非常详细,和大家一起分享一下

    JAVA常见异常整理.docx

    Java异常处理是编程中至关重要的部分,它帮助程序员在程序执行过程中捕获并处理错误情况。在Java中,异常是通过类的实例来表示的,这些类都继承自`java.lang.Throwable`类,它是所有异常和错误的根类。异常分为两种...

    13-JAVA异常处理

    JAVA异常思维导图,便捷整理思路,异常、异常处理:捕获异常、抛出异常、自定义异常、方法覆盖中的异常处理、在处理异常时,是选择捕获处理还是抛出处理?

    Java 异常处理练习.doc

    Java异常处理是编程中至关重要的一个方面,它用于处理程序执行期间可能出现的错误或异常状况。在Java中,异常是一个对象,它表示程序运行时的不正常状态或错误。异常对象是`Throwable`类或其子类的实例,Java通过...

    Java异常详解_动力节点Java学院整理

    异常处理机制异常处理机制在Java中,异常处理是通过try-catch-finally语句块实现的。如上文示例所示,我们把可能会抛出异常的代码放在try块中,然后跟着一个或多个catch块来捕获和处理特定类型的异常。finally块用于...

    关于Java异常处理的几条建议_动力节点Java学院整理

    Java 异常处理机制详解 Java 异常处理是 Java 语言中的一种机制,用于处理程序中的异常情况。Java 提供了抛出异常、捕捉异常和 finally 语句的使用来处理程序异常。下面是关于 Java 异常处理的几条建议: 建议 1: ...

    javascript编程异常处理实例小结

    前言:在前一篇《asp.net开发中常见公共捕获异常方式总结》,我们整理总结了asp.net服务端的异常处理。这一篇接着前文,简单总结并讨论一下javascript在客户端的异常处理。这样asp.net的服务端和客户端异常处理我们...

    基于球坐标系的卫星磁异常数据处理与正反演方法研究.pdf

    根据提供的文档内容,本研究主要聚焦于卫星磁异常数据的处理、正演模型构建以及反演算法的开发,并基于球坐标系进行讨论。以下为详细的知识点整理: 1. 磁异常数据处理的重要性:磁异常数据是地磁学研究中的重要...

    马氏距离法剔除异常样本可运行,马氏距离检测异常值,matlab

    对于异常样本的处理,不仅可以使用马氏距离,还可以结合其他方法,如Isolation Forest、LOF(局部离群因子)等,以获得更全面的异常检测结果。在实际工程中,选择合适的方法往往需要考虑问题的具体背景和数据特性。

    Java异常简介和架构_动力节点Java学院整理

    Java异常处理是编程中至关重要的一个方面,它帮助开发者在程序遇到错误时进行优雅的恢复或终止。Java异常是程序运行时出现的不正常情况,可能是由于逻辑错误、资源问题或其他不可预见的因素导致的。Java提供了强大的...

    C语言字符串处理函数整理版本

    C语言字符串处理函数整理版本,包含字符串基本操作,字符串类型转换、字符检查、输入输出流、输入输出流分割、异常处理等

Global site tag (gtag.js) - Google Analytics