• Java异常分类


    一.基本概念

    Throwable是所有异常的根,Java.lang.Throwable

    Error是错误 java.lang.Error

    Exception是异常 java.lang.Exception

    二、Exception

    一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException

    ①Checked异常

    只有java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。

    1 当前方法知道如何处理该异常,则用try...catch块来处理该异常。
    2 当前方法不知道如何处理,则在定义该方法是声明抛出该异常。

    我们比较熟悉的Checked异常有

    Java.lang.ClassNotFoundException
    Java.lang.NoSuchMetodException
     java.io.IOException

    ②RuntimeException

    Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。

    我们比较熟悉的RumtimeException类的子类有

    Java.lang.ArithmeticException
    Java.lang.ArrayStoreExcetpion
    Java.lang.ClassCastException
    Java.lang.IndexOutOfBoundsException
    Java.lang.NullPointerException

    throw和throws的区别

    throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,而throw则是指抛出的一个具体异常

    throws:用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常

        格式是:方法名(参数)throws 异常类1,异常类2,.....

    class Math{
          public int div(int i,int j) throws Exception{
              int t=i/j;
              return t;
          }
     }
    
    public class ThrowsDemo {
          public static void main(String args[]) throws Exception{
              Math m=new Math();
              System.out.println("出发操作:"+m.div(10,2));
         }
     }

    throw:就是自己进行异常处理,处理的时候有两种方式,要么自己捕获异常(也就是try catch进行捕捉),要么声明抛出一个异常(就是throws 异常~~)。

    注意:

    throw一旦进入被执行,程序立即会转入异常处理阶段,后面的语句就不再执行,而且所在的方法不再返回有意义的值!

    public class TestThrow
    {
        public static void main(String[] args) 
        {
            try
            {
                //调用带throws声明的方法,必须显式捕获该异常
                //否则,必须在main方法中再次声明抛出
                throwChecked(-3);            
            }
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            }
            //调用抛出Runtime异常的方法既可以显式捕获该异常,
            //也可不理会该异常
            throwRuntime(3);
        }
        public static void throwChecked(int a)throws Exception
        {
            if (a > 0)
            {
                //自行抛出Exception异常
                //该代码必须处于try块里,或处于带throws声明的方法中
                throw new Exception("a的值大于0,不符合要求");
            }
        }
        public static void throwRuntime(int a)
        {
            if (a > 0)
            {
                //自行抛出RuntimeException异常,既可以显式捕获该异常
                //也可完全不理会该异常,把该异常交给该方法调用者处理
                throw new RuntimeException("a的值大于0,不符合要求");
            }
        }
    }

    转载自:https://blog.csdn.net/woshixuye/article/details/8230407

        https://www.cnblogs.com/liuyaozhi/p/5812700.html

  • 相关阅读:
    堆和栈的区别
    今天开通博客了!
    【转】Perl中的正则表达式
    【转】Windows server 2008远程桌面轻松搞定
    【转】彻底删除0KB顽固文件或文件夹的方法
    【转】Java URL Encoding and Decoding
    【转】一个女留学生在美国的七年
    【转】风雨20年:我所积累的20条编程经验
    【转】深入浅出REST
    【转】Python正则表达式指南
  • 原文地址:https://www.cnblogs.com/heyjia/p/11340041.html
Copyright © 2020-2023  润新知