一、异常

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

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

  Throwable: 

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

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

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

  处理异常两种方式:

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

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

二、Throw关键字

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

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

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

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

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

三、throws关键字

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

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

          }

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

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

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

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

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

四、try...catch

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

  格式:

    try{

      可能会出现异常的代码

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

      出现异常后执行的代码

    }

  执行流程:  

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

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

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

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

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

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

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

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

  

  

Exception、Thorow、Throws、TryCatch的更多相关文章

  1. java自定义异常(Exception、throws、try-catch)

    一.What is ... 异常处理就是容错处理机制.通过构造一个陷阱来捕获运行时的可预见错误,经对该错误进行适当处理后,让程序能继续运行不至于崩溃. 二.Who will ... 异常由系统环境引发 ...

  2. java基础16 捕获、抛出以、自定义异常和 finally 块(以及关键字:throw 、throws)

    1.异常的体系 /* ------|Throwable:所有异常和错误的超类 ----------|Error(错误):错误一般用于jvm或者硬件引发的问题,所以我们一般不会通过代码去处理错误的 -- ...

  3. throws、throw和try catch

    在学习代理模式的时候,编写动态生成代理类.java文件时,用try{}catch(){}捕获异常发现catch(Exception e)报错,得换成catch(Throwable e),然后又查了查两 ...

  4. Java检查异常、非检查异常、运行时异常、非运行时异常的区别

    Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类. Java的异常(Exception和Error)分为检查异常和非检查的异常. 其 ...

  5. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  6. JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  7. Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...

  8. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

  9. Spring AOP详解 、 JDK动态代理、CGLib动态代理

    AOP是Aspect Oriented Programing的简称,面向切面编程.AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理以及日志记录.AOP将这些分散在各个业务逻辑中的代码 ...

  10. xml语法、DTD约束xml、Schema约束xml、DOM解析xml

    今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...

随机推荐

  1. 小程序App.js 传递数据给实例(app异步数据问题)

    在最开始初始化的时候,都会触发app.js 这个里面的onload生命方法, 在这个方法里面我们可以获取之前的存储数据/异步请求等等操作, 但是这些操作一般都是需要稍许时间.也就是说在其他界面加载结束 ...

  2. 用Python实现简单通讯录

    一个简单的通讯录例子 #!/usr/bin/python __author__ = 'fierce' #coding:utf-8 import os #引用os模块 import pickle #应用 ...

  3. sqlserver存储过程的使用

    参考网址:https://www.cnblogs.com/chaoa/articles/3894311.html(存储过程)    https://www.cnblogs.com/selene/p/4 ...

  4. 自定义Cordova插件(基础篇)

    cordova自定义插件 注意:存放自定义cordova插件目录不能有空格可能会报错 cordova的安装 下载node.js,安装完成后你可以在命令行中使用node和npm. 安装cordova使用 ...

  5. ape 文件 转化为mp3 文件

    试了很多软件,最后才发觉 any-audio-converter最好用. 可以吧ape 按 cue切割好,然后转化成 MP3 官网可以免费下载: https://www.any-audio-conve ...

  6. 记录Sql2012附加Sql2008的数据库出错的解决方案

    只需要对要附加的数据文件[右键]->[属性]->[安全]->(选择“Authenticated Users”用户)[编辑]->让“Authenticated Users”用户具 ...

  7. yii2部署nginx

    页面全部提示404,nginx平台下需要额外配置yii rewrite规则,配置如下: 在nginx 的配置文件nginx.conf //增加部分 location / { # Redirect ev ...

  8. C#数组--(一维数组,二维数组的声明,使用及遍历)

    数组:是具有相同数据类型的一组数据的集合.数组的每一个的变量称为数组的元素,数组能够容纳元素的数称为数组的长度. 一维数组:以线性方式存储固定数目的数组元素,它只需要1个索引值即可标识任意1个数组元素 ...

  9. 【记录】【3】设置bing为chrome的默认搜索引擎

    方法:设置→搜索→管理搜索引擎→其他搜索引擎→设置bing搜索的网址为  http://cn.bing.com/search?q=%s 注:search?q=%s   是必须的,否则无法将其设置为默认 ...

  10. JDK8下Object类源码理解

    JDK8中Object类提供的方法: package java.lang; /** * Class {@code Object} is the root of the class hierarchy. ...