异常

作者: 啦咔_e297 | 来源:发表于2019-10-16 02:08 被阅读0次

java采用面向对象的方式来处理异常。
处理过程:
1.抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE
2.捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常,JRE在方法的调用栈中查找,从生成异常的方法开始回溯,知道找到相应的异常处理代码为止


1.JPG

运行时异常都要人工去检查处理

RuntimeException:可以通过编译,运行时错误

package 异常;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int a=0;
        int b=1;
        if(a!=0){
                System.out.println(b/a);
        }
    
                
        String str=null;
        if(str!=null){                  //对象一定要有指向,NullPointException
            System.out.println(str.length());
        }
        
        //ClassCastException 
        Animal d=new Dog();
        if(d instanceof Cat){//判断d是否为Cat或它子类的实例
            Cat c=(Cat)d;
        }
        
        
        //ArrayIndexOutOfBoundsException
        int[] arr=new int[5];
        int e=5;
        if(e<arr.length){
            System.out.println(arr[e]);
        }
        
        
        //NumberFormatException
        //String str1="123cf";   cf不是字符型的数字
        //System.out.println(Integer.parseInt(str1));
        String str1="123abcf";
        Pattern p=Pattern.compile("^\\d+$");
        Matcher m=p.matcher(str1);
        if(m.matches()){    //如果str1匹配代表数字的正则表达式,才会转换
            System.out.println(Integer.parseInt(str1));
        }
    }

}

class Animal{
    
}
class Dog extends Animal{
    
}
class Cat extends Animal{
    
}

CheckedException:不能通过编译

解决办法:1,使用"try/catch"捕获异常
2,使用"throws"声明异常
捕获.JPG

如果在语句1中遇到异常,然后异常抛出,找到对应的异常执行对应的catch下的语句,语句2不会再执行。可以有多个catch语句,final只能有一个

package 异常;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class Test2 {
    
    public static void main(String[] args) {
        FileReader reader=null;
        try{
        reader=new FileReader("C:/Users/黄文凯/Desktop/新建文件夹/a.txt");
        
        char c1=(char)reader.read();
        System.out.println(c1);
        
        }catch(FileNotFoundException e){    //子类异常在前,父类异常在后写
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            try {
                if(reader!=null){
                reader.close();
                }
            } catch (IOException e) {
                
                e.printStackTrace();
            }
        }
    }

}

当使用throws处理异常,谁调用谁处理,如果不处理,则继续向上抛异常,可以到main方法再到JRE,最后还是有异常

相关文章

  • 异常和模块

    异常 目标 了解异常 捕获异常 异常的else 异常finally 异常的传递 自定义异常 一. 了解异常 当检测...

  • python多线程

    异常基础知识 -异常简介: 运行时错误 -异常类: 异常数据 异常名称,异常数据,异常类型 -自定义异常 clas...

  • dart 异常

    dart中的异常 异常处理 抛出异常 异常捕获

  • Java基础之异常

    Java基础之异常 目录 异常简单介绍 ThrowableErrorException 异常分类 如何处理异常异常...

  • python核心编程-错误与异常

    本章主题:什么是异常Python中的异常探测和处理异常上下文管理引发异常断言标准异常创建异常相关模块 什么是异常 ...

  • motan(RPC)系统梳理知识点

    异常分类: 业务异常(bizException) 服务异常(serviceException) 框架异常(fram...

  • 异常

    Java异常体系 异常的分类 Java的异常分为两大类:Checked异常和Runtime异常(运行时异常)。所有...

  • 从零构架个人博客网站(二)-全局异常处理

    中间件的异常 全局异常中间件全局异常监听定义异常的返回结果定义常见的异常状态开发环境 异常查看 对于异常,我们可以...

  • Node.js异常处理

    Node.js异常分类: 变量异常 函数异常 调用异常 变量异常 未定义变量 未包含对象 变量类型错误 函数异常 ...

  • python 异常

    异常 目标 异常的概念 捕获异常 异常的传递 抛出异常 01. 异常的概念 程序在运行时,如果 Python 解释...

网友评论

      本文标题:异常

      本文链接:https://www.haomeiwen.com/subject/xhqjmctx.html