zoukankan      html  css  js  c++  java
  • Java异常处理

    异常是一种Exception类型的对象。

    1 Exception与Error

    Exception与Error继承于Throwable类,二者的区别:

    Exception:一般表示的是程序中出现的问题,可以直接使用try...catch处理,该类的printStackTrace()方法输出异常信息较为完整。

    Error:一般指的是JVM的错误,程序中无法处理。

    Java中所有捕获范围小的异常必须放在捕获范围大的异常之前(否则编译时会报错)。对一个程序而言,如果有多个异常,最好分别进行捕获,而不要直接使用Exception捕获全部异常。

    2 throws与throw

    throws:在定义一个方法时可以使用throws进行声明,使用throws进行声明的方法表示此方法不处理异常,而交给方法的调用处进行处理。

    throw用来人为的抛出的一个异常,抛出时,直接抛出异常类的实例化对象即可。

    ThrowDemo.java

    class Math{
    	public int div(int i,int j) throws Exception{	// 定义除法操作,如果有异常,则交给被调用处处理
    		System.out.println("***** 计算开始 *****") ;
    		int temp = 0 ;	// 定义局部变量
    		try{
    			temp = i / j ;	// 计算,但是此处有可能出现异常
    		}catch(Exception e){
    			throw e ;
    		}finally{	// 不管是否有异常,都要执行统一出口
    			System.out.println("***** 计算结束 *****") ;
    		}
    		return temp ;
    	}
    };
    public class ThrowDemo{
    	public static void main(String args[]){
    		Math m = new Math() ;
    		try{
    			System.out.println("除法操作:" + m.div(10,0)) ;
    		}catch(Exception e){
    			System.out.println("异常产生:" + e) ;
    		}
    	}
    };
    


    3 try/catch流程控制

    如果成功的话


    如果失败的话


    4 异常处理规则

    (1)Throw可以配合try、catch或throws语句使用,但不可以独立存在;

    (2)catch与finally不能没有try;

    (3)try与catch之间不能有程序;

    (4)try一定要有catch或finally

    (5)只带有finally的try必须要声明异常

    5 Exception与RuntimeException

    继承关系:Exception->RuntimeExcetion->IllegalArgumentExcetion->NumberFormatExcetion ;Exception的抛出本质上属于多态的运用。

    一般而言,Exception在程序中必须使用try...catch进行处理,但是RuntimeException可以不使用try...catch进行处理,此时如有异常产生,则异常将由JVM进行处理。

    即便不是RuntimeException异常,也可以使用throws关键字来避开异常处理,这种方式本质上属于duck方式。但是ducking只是在踢皮球,早晚还是得有人来处理这件事。如果main()也duck掉异常的话,最终只有JVM来处理异常了,而Java虚拟机对异常是没有什么责任感的,这样最终会导致程序中断执行。因此,最好做个堂堂正正的程序员。

    6 断言

    断言定义格式:assert boolean expression;  /  assert boolean expression : detail information;

    执行命令:java -ea ClassName; //-enableasssertions简写为-ea

    如果boolean表达式的结果为false,则会提示错误信息,如果没有声明Information,则系统会使用默认信息提示,类似于Exception与自定义Exception

    Test.java

    public class Test{
    	public static void main(String args[]){
    		int x[] = {1,2,3} ;	// 定义数组,长度为3
    		assert x.length==0 : "数组长度不为0" ;	// 此处断言数组的长度为0
    	}
    };


  • 相关阅读:
    打印九九乘法表
    PAT (Basic Level) Practice (中文) 1091 N-自守数 (15分)
    PAT (Basic Level) Practice (中文)1090 危险品装箱 (25分) (单身狗进阶版 使用map+ vector+数组标记)
    PAT (Basic Level) Practice (中文) 1088 三人行 (20分)
    PAT (Basic Level) Practice (中文) 1087 有多少不同的值 (20分)
    PAT (Basic Level) Practice (中文)1086 就不告诉你 (15分)
    PAT (Basic Level) Practice (中文) 1085 PAT单位排行 (25分) (map搜索+set排序+并列进行排行)
    PAT (Basic Level) Practice (中文) 1083 是否存在相等的差 (20分)
    PAT (Basic Level) Practice (中文) 1082 射击比赛 (20分)
    PAT (Basic Level) Practice (中文) 1081 检查密码 (15分)
  • 原文地址:https://www.cnblogs.com/ioveNature/p/6646600.html
Copyright © 2011-2022 走看看