美文网首页
java异常处理

java异常处理

作者: 萍水间人 | 来源:发表于2019-04-23 20:47 被阅读0次

java异常的例子

import java.io.*;
public class ExcepTest{
 
   public static void main(String args[]){
      try{
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e){
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

基本的语句块就是 try catch
当然还有一个finally, 就是无论如何这个finally都会被执行

    public static void main(String[] args) {
        try {
            
        }catch (ArrayIndexOutOfBoundsException e) {
            // TODO: handle exception
        }
    }

这样写是没有问题的

但是这样写就有问题了

需要修改成这种形式
如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

    public static void main(String[] args) throws IOException {
        
    }

原来这才是原因

Java里面异常分为两大类:checkedexception(检查异常)和unchecked exception(未检查异常),对于未检查异常也叫RuntimeException(运行时异常),对于运行时异常,java编译器不要求你一定要把它捕获或者一定要继续抛出,但是对checkedexception(检查异常)要求你必须要在方法里面或者捕获或者继续抛出。

IOException extends Exception 是属于checked exception,必须进行处理,或者必须捕获或者必须抛出。

Java检查异常和非检查异常区别

比如这个题目

必须要修改成如下形式

    public static void method() throws IOException {
        
    }
    public static void main(String[] args) {
        try {
            method();
        } catch (IOException e) {
            // TODO: handle exception
        }
    }

来我们继续看这一份代码

public class ExceptionTest {
    public static void main(String args[]) {
        try {
            int a = args.length;
            System.out.println(a);
            int b = 10 / a; //除零错
            int m[] = {1, 2, 3};
            m[3] = 12;  //越界错
        }catch (Exception e) {
            System.out.println("Exception");
        }catch (ArithmeticException e) {
            System.out.println(e.toString());
        }catch (ArrayIndexOutOfBoundException e) {
            System.out.println(e.toString());
        }
    }
}

需要我们理清楚一下异常类的继承关系

我们看到Throwable这个类被 ErrorException这两个类所继承
所以。。
其实 ArithmeticExceptionArrayIndexOutOfBoundsException 这两个类已经是继承了Exception

也就是说 Exception会捕获所有的异常, 其他的catch语句是捕获不到的

可以选择将 Exception放到最后来捕捉
也可以

public class ExceptionTest {
    public static void main(String args[]) throws ArithmeticException, ArrayIndexOutOfBoundsException {
        try {
            int a = args.length;
            System.out.println(a);
            int b = 10 / a; //除零错
            int m[] = {1, 2, 3};
            m[3] = 12;  //越界错
        }catch (Exception e) {
            System.out.println("Exception");
        }
    }
}

相关文章

  • Java- 异常处理

    Java- 异常处理 异常处理能够使一个方法给它的调用者抛出一个异常。 Java异常是派生自 java.lang....

  • JNI异常

    JNI异常 JNI允许native方法引发任意Java异常。native代码还可以处理未解决的Java异常。未处理...

  • Java 异常分析

    本文是对以下内容的分析: Java异常设计 Java 异常分类 Java异常可以告诉什么问题 Java异常处理最佳...

  • Java异常处理-检查性异常、非检查性异常、Error

    一、Java异常处理详解 Java异常处理-笔记中的@doublefan讲解得非常通熟易懂 二、检查型异常和非检查...

  • java异常---异常处理

    一、重点知识 IDEA创建配置文件file目录下选择Resource Bundle,直接输入文件名创建就好了 记得...

  • Java基础系列-Exception异常处理

    原创文章,转载请标注出处:《Java基础系列-Exception异常处理》 一、概述 Java代码中的异常处理是非...

  • 04- JAVA异常

    在JAVA中异常就是一个类,产生异常就是创建异常对象并抛出一个异常对象。JAVA处理异常的方式是中断处理。参考:j...

  • Kotlin2.5异常

    Kotlin的异常处理和Java以及其他许多语言的处理方式相似,异常处理语句的基本形式和Java类似,抛出异常的方...

  • Java自学-异常处理 处理

    Java的异常处理办法 try catch throws 异常处理常见手段: try catch finally ...

  • Java 异常面试问题与解答

    Java 提供了一种健壮且面向对象的方法来处理称为 Java异常处理的异常情况。 1. Java中的异常是什么? ...

网友评论

      本文标题:java异常处理

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