Exception、Thorow、Throws、TryCatch

一、异常

  概述:  异常指的是不正常,指的是程序中出现了某种问题

       java中,所有问题都可以使用一个类来表示,这个类叫做Throwable

  Throwable: 

      Throwawble是java中所有异常和错误的父类

      Error: 表示错误,指的是不可挽回的严重问题

      Exception: 表示异常,指的是可以挽回的轻微问题,

  处理异常两种方式:

1、往外抛(甩锅):throw throws

      2、解决问题:   try...catch

二、Throw关键字

    如果想要手动创建异常,并手动抛出,我们需要throw关键字

    格式: throw new 异常类名();

    注意: 如果方法内抛出异常,那么这个方法剩下的代码不会执行,程序直接回到调用者

1if(index < 0 || index > arr.length - 1) { 2 String msg = "索引的取值范围必须是0到" + (arr.length - 1) + ", 您给的索引为:" + index; 3 throw new ArrayIndexOutOfBoundsException(msg); 4 } 5 System.out.println("你好"); 6 return arr[index]; 7 8 //控制台中打印异常结果: 9 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 索引的取值范围必须是01, 您给的索引为:10

     上面代码在控制台中打印异常结果,并没有执行输出语句。

三、throws关键字

   throws:  进行异常声明,表示方法内部可能会抛出异常

   格式:   修饰符  返回值类型  方法名(参数列表) throws  异常类名{

          }

   注意:  1、如果在一个方法内抛出了编译时异常,那么一定要进行异常的声明

        2、如果调用使用了throws声明异常的方法,那么作为调用者要么处理,要么抛出

        3、当一个方法内抛出了运行时异常,可以使用throws进行异常声明,也可以不做声明

        4、在一个方法内如果可能抛出多个异常,那么可以使用throws声明这些异常,也可以直接声明这些异常的父类

1public static void method3() throws Exception{ //方法内抛出了两个异常,可以用Exception声明 2 int i = 0; 3 if(i % 2 == 0) { 4 throw new IOException(); //IO异常 5 } else { 6 throw new ClassNotFoundException(); //classNotFound异常 7 } 8 }

 四、try...catch

  如果代码出现异常之后,不希望把这个异常往外抛,可以使用try...catch解决这个问题

  格式:

try{

      可能会出现异常的代码

    }catch(要捕获的异常类名  变量名){

      出现异常后执行的代码

    }

  执行流程:  

    如果try中代码没有问题,那么执行完try之后,会跳过catch继续往下执行

    如果try中的代码有问题,并且catch捕获到了这个异常,那么就会直接进入到catch中执行

    如果try中的代码有问题,但是catch没有捕获到这个异常,那么这个异常会依旧往外抛

    总结:如果catch到了就进入catch内部解决,如果没有catch到就仍然甩锅

1try { 2 Object obj = null; 3 obj.toString(); 4 System.out.println("1. try...end"); 5 } catch (ArrayIndexOutOfBoundsException e) { 6 System.out.println("2. catch代码..."); 7 } 8 System.out.println("3. main...end");     //控制台中打印    Exception in thread "main" java.lang.NullPointerException

     上方代码try中异常是:NullPointerException的异常

        catch中是: ArrayIndexOutOfBoundsException,并没有捕捉到try中异常

        所以  :     仍然将NullPointerException抛给JVM在控制台打印

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

javaAPI_IO流基础_异常

异常1.异常的概述和分类java中的异常有一个超类Throwable,然后其有俩个子类接口Error和Exception,其中Error是严重问题,这一个是程序中无法解决的,而另一个Exception则是一般问题。Exception又可以分为俩个:(1).编译时期异常:不是RuntimeException的异常,这一个是必须

Java中的异常

异常的概述异常就是不正常的意思,Java语言中主要指程序在运行阶段产生的错误Throwable(可抛出、可扔出的)Java.lang.Throwable类是Java程序所有错误或异常的超类主要有两个子类:  Error:主要描述比较严重的错误,无法通过编程来解决的重大的错误  Exception:主要描述比较轻量

JEE开发异常处理

      在Java开发中,到处可见Exception或者它的子类。如何在一个已有的框架中或者自己的项目中利用好异常,而不让异常漫天飞,需要开发的积累和总结,这篇日志就为这个目的总结几年来的开发对异常使用总结吧。      首先认识Java异常体系结构,Java中使用Throwable作为所有的异常父类,下面有两大子类Error和Excepti