首页 > 编程语言 >Java 异常

Java 异常

时间:2024-01-31 21:11:30浏览次数:28  
标签:Java System println catch 异常 public out

异常

Error和Exception

Java把异常当作对象处理,并定义一个基类java.lang.Throwable作为所有异常的超类

异常类分为两大类:Error错误和Exception异常

Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,JAVA虚拟机(JVM)一般会选择终止线程

Exception通常情况下可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。

捕获和抛出异常

异常处理的五个关键字:try catch finally throw throws

public class Test {
    public static void main(String[] args) {
        int a=1;
        int b=0;

        try{ //监控区域
            System.out.println(a/b);
        }catch (ArithmeticException e){//catch 捕获异常
            System.out.println("程序出现异常,变量b不能为0");
        }finally {//处理善后工作
            System.out.println("finally");
        }
        
        //fianlly 可以不要,假设IO,资源,需要关闭,可以把关闭的操作放在finally里面

    }
}    
public class Test {
    public static void main(String[] args) {
        int a=1;
        int b=0;

        //假设要捕获多个异常,要从小到大

        try{ //监控区域

            if(b==0){//主动抛出异常 throw  throws
                throw new ArithmeticException();
            }

            System.out.println(a/b);
        }catch (Error e){//catch(想要捕获的异常类型) 捕获异常
            System.out.println("Error");
        }catch (Exception n){
            System.out.println("Exception");
        }catch(Throwable t){
            System.out.println("Throwable");
        }
        finally {//处理善后工作
            System.out.println("finally");
        }

        //fianlly 可以不要,假设IO,资源,需要关闭,可以把关闭的操作放在finally里面


        try {
            new Test().text(1,0);
        } catch (ArithmeticException e) {
            e.printStackTrace();
        } finally {
        }

    }

    //假设这个方法中处理不了这个异常,方法上抛出异常 throws
    public void text(int a,int b) throws ArithmeticException{
        if(b==0){//主动抛出异常 throw  throws
            throw new ArithmeticException();//主动抛出异常,一般在方法中使用
        }

        System.out.println(a/b);

    }
}
public class Test2 {
    public static void main(String[] args) {
        int a=1;
        int b=0;

        //Ctrl+Alt+T
        try {
            System.out.println(a/b);
        } catch (Exception e) {
            System.exit(0);
            e.printStackTrace();//打印错误的栈信息
        } finally {

        }

    }
}

自定义异常

用户自定义异常类,只需要继承Exception类即可

  1. 创建自定义异常类
  2. 在方法中通过throw关键字抛出异常对象
  3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
  4. 在出现异常方法的调用者中捕获并处理异常
//自定义的异常类
public class MyException extends Exception{

    //传递数字  >10;
    private int detail;

    public MyException(int a) {
        this.detail=a;
    }

    //toString:异常的打印信息

    @Override
    public String toString() {
        return "MyException{" +
                "detail=" + detail +
                '}';
    }
}
public class Test03 {
    //可能会存在异常的方法
    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,System,println,catch,异常,public,out
From: https://www.cnblogs.com/shijili/p/18000134

相关文章

  • Java的方法详解
    Java方法详解什么是方法Java方法是语句的集合,它们在一块执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或者对象中方法在程序中被创建,在其他地方被引用方法命名规则:驼峰原则publicclassDemo01{//main方法publicstaticvoidmain(String[]......
  • Java 数组
    数组数组是相同类型数据的有序集合。数组的声明和创建publicclassDemo01{//变量的类型变量的名字=变量的值//数组类型publicstaticvoidmain(String[]args){//首先声明数组变量int[]nums;//定义,首选这种intnums2[]......
  • Java的基础语法
    Java基础语法注释:书写注释是一个非常好的习惯,平时写代码一定要规范单行注释://多行注释:/**/文档注释JavaDoc:/***/标识符不能使用关键字作为变量名和方法名标识符大小写敏感首字母以字母、_以及$开头可以使用中文名,但是不建议,也不建议使用拼音,很low数据类型......
  • Java的流程控制
    Java流程控制Scanner对象我们通过Scanner类获取用户的输入。基础语法:Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。next():一定要读取到有效字符才可以结束......
  • Java 的开始
    Java的jdk、jre、jvmjdk:JavaDelelopmentKitjre:Java运行环境jvm:JavaVirtualMachine卸载jdk删除java的安装目录删除Java_HOME删除path下关于Java的目录通过java-version检查安装jdk百度搜索JDK8,找到下载地址同意协议下载电脑对应的版本双击安装JDK......
  • c# JS的onclick()方法参数中含有引号导致参数传递异常
    引号导致的问题主要是参数不正常的截取,因为参数中传递的引号可能会与前边包括方法名的引号对应解决这个问题的操作还是需要用到转义\,让html不解析解决方法:replace("\'","\\'")......
  • Day63 异常03:自定义异常及经验小结
    自定义异常使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。在程序中使用自定义异常类,大体可分为以下几个步骤:创建自定义异常类。在方法中通过throw关键字抛出异常对象。如果在当......
  • java flink(二十六) 实战之电商黑名单过滤 Flink CEP编程实现、什么是CEP、CEP组合模式d
    javaflink(二十六)实战之电商黑名单过滤FlinkCEP编程实现、什么是CEP、CEP组合模式demo、CEP循环模式demo什么是CEP:1、复杂事件处理2、Flink中实现复杂事件处理库3、CEP允许在无休止的事件中检测事件模式,让我们有机会掌握数据中的重要部分4、一个或多个由简单事件构成的事......
  • SpringMVC之异常处理器的使用
    SpringMVC的异常处理器是处理控制器方法执行过程出现的异常。SpringMVC提供了一个处理异常的接口HandlerExceptionResolver。HandlerExceptionResolver接口有两个实现类:DefaultHandlerExceptionResolver实现类和SimpleMappingExceptionResolver实现类。DefaultHandlerExcepti......
  • 2024年Java面试题大全,带你突破技术瓶颈
    全套面试题已打包2024最全大厂面试题下载......