java异常的详解
来源:互联网 发布:8月中国经济数据 编辑:程序博客网 时间:2024/05/21 10:00
java的异常可分为两大类:Checked Exception和Unchecked Exception(又名Runtime Exception)两者都继承自java.lang.Exception类
java中所有的异常都是一个类或者说是一个对象。
之所以分类是因为:系统对于这两大类的异常有不一样的处理方式。
java.lang.Object
java.lang.Throwable
java.lang.Exception
RuntimeException
……………………
java.lang.Error
Unchecked Exception(运行时异常):java中所有的运行时异常都直接或间接继承自RuntimeException类,
java对于运行时异常可以处理也可以不做任何处理,并建议最好不做处理。
处理异常与不处理的区别:如果对于异常不作处理(没有try……catch……),程序将不会继续往下执行
处理异常的方法:
public class Exception1{public static void main(String[] args){int c = 99;try{int a = 9;int b = 0;c = a / b; //会出现异常,即产生一个异常对象(new ArithmeticException())System.out.println("after ArithmeticException");//不会被执行} catch (ArithmeticException e){e.printStackTrace();System.out.println("catch block ");}finally{System.out.println("finally block");//无论是否发生异常总会执行}System.out.println(c);//只有捕获了异常,才会执行}}
执行顺序:执行try代码块的语句,如果发生异常则产生一个相应的异常对象,执行catch语句,然后是finally语句,最后程序继续执行。 如果未发生异常,跳过catch块,执行finally语句,最后程序继续执行。
对于异常捕获也可以没有catch代码块,但不推荐不做任何的处理。也可以有多个catch块,但要注意异常之间的关系。
Checked Exception:对于非运行时异常必须对其进行处理,处理方式有两种:捕获处理和调用的方法处抛出
public class Exception1{public static void main(String[] args) //也可以在此处抛出异常{try{ //捕获处理int c = divide(12,3);} catch (Exception e){// TODO Auto-generated catch blocke.printStackTrace();} }public static int divide(int a,int b) throws Exception{if(b == 0){throw new Exception();}return a/b;}}
自定义异常:自定义异常一般继承自Exception类的子类。在开发中自定义的异常一般都继承Exception而非RuntimeException。
public class Exception1{public static void main(String[] args) {try{int c = divide(12,3);} catch (MyException e){e.printStackTrace();}}public static int divide(int a,int b) throws MyException{if(b == 0){throw new MyException("除数不能为0");}return a/b;}}class MyException extends Exception{MyException(String message){super(message);}}
注意:如果在try代码块中有return语句,而语句未发生异常,则必须在执行完finally后才执行。
如果在try代码块中有System.exit(0)语句,则不会执行finally语句,因为System.exit(0)语句会终止当前的java虚拟机。
- java异常的详解
- Java的异常机制详解
- Java 所有异常的详解
- 详解java异常的处理
- 一篇不错的Java异常详解文章
- Java 里的异常(Exception)详解
- java的异常处理机制详解
- Java中常见的RunTime异常及异常详解
- java异常处理详解
- java常见异常详解
- Java异常处理详解
- 【转载】Java异常详解
- Java异常详解
- java中的异常详解
- Java异常详解
- java中的异常详解
- java(22) - 异常详解
- java异常详解
- 使用xstl 和jaxp完成数据转换
- 未知异常: Maximum call stack size exceeded
- 在字符串中删除特定的字符
- mirror
- 0.ring3-DLL劫持技术详解(lpk.dll)
- java异常的详解
- Struts2中action重定向跳转到jsp页面两种配置方式
- Android WebView不调用默认的 Browser
- 判断一个整数是否是回文数
- Linux设备模型——设备驱动模型和sysfs文件系统解读
- 又开始看孙鑫视频了:菜单之静态菜单
- 泛泰binx解包控件,小改一下提取脚本(7.31)
- 面向IT产品经理的计算机语言知识普及(一)
- wordpress的编辑后台显示历史版本