IDEA的异常分类及处理原则和日志控制

异常

异常分类

Throwable的父类是Object 类,子类分为Error和Exception

Error表示什么异常,一般怎么处理

一般是严重错误,程序无法处理,在非正常递归调用时可能会导致StackOverflowError,

Exception表示什么异常,一般这么处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HXmpsZ8q-1587722939140)(C:\Users\72038714\AppData\Roaming\Typora\typora-user-images\1587689092790.png)]

异常处理

异常处理原则是:捕获并处理那些知道该如何处理的异常,抛出那些不知道如何处理的异常

捕获异常

捕获方式

(try{}catch{*****}finally{******} ),异常经过捕获后,执行会进入catch部分,finally最后都会执行。在执行完t ry catch整块之后,后面的代码会继续执行,不会终止。

1.多层异常捕获,需要先捕获子类异常,在捕获父类 异常,一次向上递进

  1. finally 处理最后的资源类释放 流释放或者链接释放

  2. 非运行时异常需要提前进行异常处理,否则会有报语法错误

    public class MyException {
         
    
        public static void main(String[] args) {
         
    
            try {
         
                process1(null);
            } catch (Exception e) {
         
                e.printStackTrace();
            }
    
            try {
         
                process2(null);
            } catch (IOException e) {
         
                e.printStackTrace();
            }
    
            try {
         
                process3(null);
            } catch (SQLException e) {
         
                e.printStackTrace();
            }
        }
    
        static String process1(String word){
         
            System.out.println("这里是NullPointerException"+System.currentTimeMillis());
            if(null == word){
         
                throw new NullPointerException();
            }
    
            return word;
        }
    
        static void process2(String word) throws IOException {
         
            System.out.println("这里是IOException"+System.currentTimeMillis());
            throw new IOException();
            //process3(word);
        }
    
        static void process3(String word) throws SQLException {
         
            System.out.println("这里是SQLEXCEPTTION"+System.currentTimeMillis());
           throw new SQLException();
            //process2(word);
    
        }
    }
    
    
执行结果:
这里是NullPointerException1587692190353
这里是IOException1587692190354
这里是SQLEXCEPTTION1587692190354
java.lang.NullPointerException
	at charpter08.MyException.process1(MyException.java:50)
	at charpter08.MyException.main(MyException.java:29)
java.io.IOException
	at charpter08.MyException.process2(MyException.java:58)
	at charpter08.MyException.main(MyException.java:35)
java.sql.SQLException
	at charpter08.MyException.process3(MyException.java:64)
	at charpter08.MyException.main(MyException.java:41)

执行结果显示,三个调用的方法都执行了。依次抛出了他们的异常

异常抛出

异常的抛出使用throw关键字,需要再方法声明的最后。非运行时异常在声明时候需要处理
1.非运行时异常,如果在调用的方法中又抛出此类异常,或者在方法中声明了非运行时异常,那么该异常必须被立即处理,否则会出现语法错误。

 static void process3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值