异常笔记补充

异常(Throwable)

1.异常定义:

生活中的异常——有异于常态,和正常情况不太一样,有错误出现。

Java中的异常——程序运行期间有可能出现的问题,阻止当前方法或作用域继续执行,即称之为异常。

2.分类:

(1)错误(Error):主要包括虚拟机错误(VirtualMachineError)和线程四锁(ThreadDeath),出现后程序彻底崩溃

(2)异常(Exception):主要包括非检查异常(RuntimeException)和检查异常。

非检查异常主要包括:空指针异常(NullPointerException),数组下标越界异常(ArrayIndexOutOfBoundsException),

类型转换异常(ClassCastException),算数异常(ArithmeticException)

——说明代码本身有问题,应从逻辑上对代码进行修改。

检查异常主要包括:文件异常(IOException),SQL异常(SQLException)

3.捕获异常

(1)try——catch的使用

try{

  System.tou.println("请输入你的年龄:");

  Scanner input = new Scanner(System.in);

  int age = input.nextInt();

  System.out.println("十年后你"+(age+10)+"岁");

}catch(InputMismatchException e){

  System.out.println("你应该输入整数!!");

}

System.out.println("程序结束了");

try——catch块中的语句执行完后,会继续执行后面的语句。

(2)多重catch块的使用

Scanner input = new Scanner(System.in);

try{

  System.out.println("请输入第一个数:");

  int one = input.nextInt();

  System.out.println("请输入第二个数:");

  int two = input.nextInt();

  System.out.println("两数相除的结果为:"+ one / two);

}catch(InputMismatchException e){

  System.out.println(你应该输入整数);

}catch(ArithmeticException e){

  System.out.println("除数不能为0");

}

System.out.println("程序结束了");

捕获异常:

try{

  //一些会抛出异常的方法

}catch(Exception e){

  //处理该异常的代码块

}catch(Exception2 e){

  //处理(Exception2的代码块

}...(n个catch块)...{

}finall{

  //最终要执行的一些代码块

}

注意:先小后大,先子类后父类,捕获就不抛出,抛出就不捕获。

子类能抛出父类的异常——比父类小,子类的异常不能比父类的大,子类的的异常可以比父类的多。

4.异常抛出和自己定义异常

throw(动作)——将产生的异常抛出

throws(声明)——声明将要抛出何种类型的异常

public void 方法名(参数列表)throws 异常列表{

//调用会抛出异常的方法或者:throw new Exception();

}

自定义异常格式:

class 自定义异常类 extends 异常类型{

}

示例:(喝大了)

public class DrunkException extends Exception{  //Java类库中没有DrunkException 类,所以定义时继承Exception类

  public DrunkException (){

  }

  public DrunkException (String message){

    super(message);

  }

}

总结:

(1)处理运行异常时,采用逻辑去合理规避同时辅助try——catch处理

(2)多重catch快后面,可以加一个catch(Exception)来处理可能会被遗漏的的异常

(3)对于不确定的代码,也可以加上try——catch,处理潜在的异常

(4)尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出

(5)具体如何处理异常,要根据不同的也无需求和异常类型去决定

(6)尽量添加finally语句块去释放占用的资源

时间: 2025-01-03 00:36:51

异常笔记补充的相关文章

PHP 错误与异常 笔记与总结(10)错误处理器测试

关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorHandler.php'; error_reporting(-1); set_error_handler(array('myErrorHandler', 'deal')); //通知级别错误 echo $notice; 运行,在 D:\practise\php\From\notice 生成 noticeLo

STM32 FSMC学习笔记+补充(LCD的FSMC配置)

STM32 FSMC学习笔记+补充(LCD的FSMC配置) STM32 FSMC学习笔记 STM32 FSMC的用法--LCD

Android网络项目课程笔记-----补充

一. 数据上传 1. 登录 数据上传 + 安全(加密 ) 2. 评论 数据上传 + 数据过滤 3. 图片.音频或视频上传 任何资源都是二进制,二进制都可以转为String 使用到的技术: HTTP get请求 1. Android客户端向Server请求下载数据 2. Android客户端把数据上传到Server端 get   url + &key=value&key1=value1 弊端:上传数据量有限(IE 2k) 不安全 post:相对安全 上传数据量比get大 二. 数据缓存 显著

使用CGlib出现java.lang.NoClassDefFoundError: org/objectweb/asm/Type异常【补充】

援引:使用CGlib出现java.lang.NoClassDefFoundError: org/objectweb/asm/Type异常 援引:class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class 源环境: IDE:IntelliJ IDEA 项目目的:测试动态代理 -- CGLIB 项目属性:Java Application 项目结构: 被

异常笔记--java编程思想

开一个新的系列,主要记一些琐碎的重要的知识点,把书读薄才是目的...特点: 代码少,概念多... 1. 基本概念 异常是在当前环境下无法获得必要的信息来解决这个问题,所以就需要从当前环境跳出,就是抛出异常.抛出异常后发生的几件事: 1.在堆上创建异常对象. 2.当前的执行路径中止                                          3. 当前环境抛出异常对象的引用.                                         4. 异常处理机制接

Java异常笔记整理

参考书籍:Head First Java 1.假设某方法是别人写在某个类里面的 2.而此时你根本就不知道这个方法是否有风险(比如服务器出故障会使程序受到影响): 3.那最好的方法应该就是,在调用这个类的方法时,加上可能发生异常的处理方案,未雨绸缪. 关键字:try……catch,throws,throw,finally try……catch其实就是给编译器的一个信号,表示你已经注意到了这个异常并开始着手进行应对: 编译器需要程序员try包裹住可能发生异常的代码,再通过catch去处理 Runti

PHP 错误与异常 笔记与总结(14 )记录和发送异常信息

当发生异常时,把异常信息记录到日志文件中: 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 class LogException extends Exception{ 4 public function __construct($message = null, $code = 0){ 5 parent::__construct($message, $code); 6 error_log($this->getMessage

PHP 错误与异常 笔记与总结(16 )自定义异常处理器

可以使用自定义异常处理器来处理所有未捕获的异常(没有用 try/catch 捕获的异常). set_exception_handler():设置一个用户定义的异常处理函数,当一个未捕获的异常发生时所调用函数的名称(回调函数),该函数必须在调用 set_exception_handler() 之前已经定义.该处理函数需要接受一个参数,该参数是一个抛出的异常对象 [例] 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 head

PHP 错误与异常 笔记与总结(13 )自定义异常类

针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常.自定义异常类通过继承基类(Exception),对基类进行扩展. 自定义异常类 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 /* 4 自定义异常类 5 */ 6 class MyException extends Exception{ 7 //重写父类构造函数 8 public function __contruct($mess