Java教程

Java基础复习(七)

本文主要是介绍Java基础复习(七),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

异常

  • 检测性异常:用户错误或问题引起的异常,这些异常在编译时不能被忽略
  • 运行时异常:可以被程序员避免的异常,在编译时可以被忽略
  • 错误ERROE:错误不是异常,而是脱离程序员控制的问题,在代码中通常被忽略

Error和Exception的区别:Error通常是灾难性的致命的错误,jvm会选择终止线程;Exception通常是可以被程序处理的。

package Jc;

public class A {
    public static void main(String[] args) {
        int a = 1, b = 0;
        //假设捕获多个异常:从小到大!
        try {    //监控区域
            System.out.println(a / b);
        } catch (Error e) {    //catch(想要捕获的异常类型) 捕获异常
            System.out.println("Error");
        } catch (Exception e) {
            System.out.println("Exception");
        } catch (Throwable t) {
            System.out.println("Throwable");
        } finally {   //处理善后共工作
            System.out.println("finally");
        }
        //finally try-catch-finally(可以不要finally,假设IO,资源,关闭)
    }
    //ctrl+alt+t:快捷键生产try-catch-finally 
}



throw制造异常,throws抛出异常

package Jc;

public class A {
    public static void main(String[] args) {
    try {
        new A().test(1,0);
    }catch (ArithmeticException e){
        e.printStackTrace();
    }
    }
    
    public void test(int a,int b) throws ArithmeticException{
        if(b==0){
            throw new ArithmeticException();    //主动抛出异常,一般在方法中使用
        }
    }
}

自定义异常

package Jc;

class MyException extends Exception{
    private int detail;
    public MyException(int a){
        this.detail=a;
    }
    @Override
    public String toString(){
        return "MyException{"+detail+'}';
    }
}
public class A {
    static void test(int a) throws MyException{
        System.out.println("传递的参数为:"+a);
        if(a>10){
            throw new MyException(a);
        }
        System.out.println("OK");
    }

    public static void main(String[] args) {
        try{
            test(11);
        }catch(MyException e){
            System.out.println("MyException=>"+e);
        }
    }
}

实际应用总结

  • 处理运行时异常,采用逻辑去合理规避同时辅助try-catch处理
  • 在多重catch块后面,可以加catch(Exception)来处理可能被遗漏的异常
  • 对于不确定的代码,也可以加上try-catch,处理潜在的异常
  • 尽量去处理异常,切记只是简单的调用printStackTrace()去打印输出
  • 尽量添加finally语句块去释放占用的资源

这篇关于Java基础复习(七)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!