一、异常

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

       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. Bootstrap3基础 栅格系统 1行最多12列

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  2. selenium+unittest自动化测试

    学了unittest+接口测试后,又试着用框架去做UI测试.感觉还是很好用的. 项目里该有的基本都有了,供以后扩展学习做个参考. 链接:https://github.com/Mollylin0/mon ...

  3. 用 jupyter notebook 打开 oui.txt 文件出现的问题及解决方案

    问题背景:下载了2018 IEEE 最新的 oui.txt 文件.里面包含了 设备 MAC 地址的前六位对应的厂商.要做的工作是,将海量设备的 MAC 地址与 oui.txt 文件的信息比对,统计出 ...

  4. 两两交换链表中的节点(java实现)

    题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你应该返回 ...

  5. Axure文本框验证和外部url的调用

    文本框的验证和外部url的调用: 场景: 当输入文本框中的内容是满足下面条件时:输入4-10的数字,页面会跳转到QQ注册(https://ssl.zc.qq.com/v3/index-chs.html ...

  6. 20175317 《Java程序设计》第六周学习总结

    20175317 <Java程序设计>第六周学习总结 教材学习内容总结 第六周我学习了教材第七章与第十章的内容,了解了内部类.异常类与输入输出流的知识,学到了以下内容: 什么是内部类 如何 ...

  7. Lyrics来源

    Lyre 里拉琴,古希腊语,在北欧流行至中世纪.   Lyrics in sheet music. This is a homorhythmic (i.e., hymn-style) arrangem ...

  8. 2018-2019-2 网络对抗技术 20165303 Exp1 PC平台逆向破解(BOF实验)

    1.实践目的 本次实践的对象是一个名为pwn1的linux可执行文件. 三个实践内容如下: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的Bof漏洞,构造一个 ...

  9. libcrypto.so.1.0.0: no version information available

    openssl-1.0.1p源码安装后,依赖于openssl.so库的应用报错libcrypto.so.1.0.0: no version information available 解法:1. 创建 ...

  10. 448. Find All Numbers Disappeared in an Array&&645. Set Mismatch

    题目: 448. Find All Numbers Disappeared in an Array Given an array of integers where 1 ≤ a[i] ≤ n (n = ...