学习-异常处理

  java把各种异常封装成各种类,当某异常产生的时候会生成相应的异常对象,默认的处理异常对象的方式,是当前语句停止,并且将异常对象抛给当前语句的调用者,如果异常对象出现在main方法,则抛给虚拟机.虚拟机的处理方式是关掉整个程序.

  一.Throwable类

  Throwable类-可抛的,继承自Object,是所有异常与错误的父类.他有两个方法经常被使用.

  1.getMessage方法,返回异常的字符串消息;

  2.printStackTrace方法,追踪打印抛出异常的地方.

  他有两个子类:

  1.Error类-错误

  往往是代码无法修复的,一般是硬件问题或者是运行环境问题.

  2.Exception类

  是可以用代码修复的.

  二.异常处理

  上面说了Error是代码处理不了的,所以不在处理范围内,异常处理指的就是对Exception类及其子类的对象的处理,异常分为两类:

  1.运行时异常(RuntimeException)

  顾名思义,运行时异常就是没有语法错误,编译时不会出现异常,而是程序运行起来以后发生的异常.

  处理方式:a.最好的处理方式是预先针对可能发生异常的语句做出判断和处理.

       b.在a无法实现的时候就要使用异常捕获机制:try(尝试) - cahch(捕获) - finally(最终),三个关键字组成的语句块

      try{

        //⑴

      } catch (⑵) {

        //⑶

      } finally {

        //⑷

      }

  在⑴中书写的是有可能发生异常的代码.如果是多个语句.在其中一个语句发生异常时,try语句结束,后面的代码将不会被执行,直接跳到catch块捕获到相应异常的语句块执行其内容;

  在⑵中书写的是要捕获的异常类型以及变量名(用于指向对应的异常对象);

  在⑶中书写的是处理该异常的语句;在异常类型没有继承关系的时候,多个catch语句块之间是平行关系不分先后;在异常类型有继承关系的时候,多个catch语句块之间必须有顺序,子类写在前,父类写在后;

  在⑷中书写的是不管有没有发生异常都会执行的语句,一般用作资源清理和关闭管道;如果没有非要执行的语句,finally语句块是可以不写的;值得注意的是finally 语句块的执行时机.如果,try语句或者catch语句有break,continue,return等命令,在计算机读到这些命令准备执行时,会检查是否有finally语句块,如果有,执行暂停,先执行finally语句块.所以当return一个值的时候,如果finally语句要修改这个值是没办法影响返回结果的.比如:a = 10;在前面语句中要return a;在finally语句中要执行a++;最后返回出去的还是10.因为计算机已经把返回值准备好了,只是暂停返回.

  关键字:throw - 抛出

  使用他可以主动将一个异常对象纳入到默认的异常传播机制中.

  2.编译时异常

  这种异常是Exception子类中除了运行时异常意外的其他子类.

  特点是,凡是使用关键字throws的方法都是有可能出现异常的,throws作用是警告使用者,要预先处理该异常;throws写在方法声明的最后面,后跟有可能出现的异常类型;这种预先就知道可能会发生的异常叫做编译时异常.

  处理的方式:a.使用异常捕获机制;

          b.也在声明部分写throws跟异常类型,将其抛给当前语句的调用者;

  throw throws
书写位置 写在方法的实现部分 写在方法的声明部分(形参列表之后)
后面跟的代码 后面接一个异常对象 后面接一个到多个异常类型
意义 一旦运行到throw语句就好真正产生一个异常对象抛出 警告调用者可能发生某类型的异常

  3.自定义异常

  做法:a.新建自定义异常,让其继承Exception;

     b.通过调用父类指定构造,让自定义异常通过传入的任何一个异常对象构造自身;通过调用父类指定构造,让自定义异常通过传入的字符串异常信息构造自身;

     c.添加我们自己需要的异常方法(如:书写日志);

时间: 2024-08-18 22:25:54

学习-异常处理的相关文章

python学习——异常处理

在学习异常处理之前,先来了解一下异常和错误的关系. 一.什么是错误 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正)?? 1 #语法错误示范一 2 if 3 4 #语法错误示范二 5 def test: 6 pass 7 8 #语法错误示范三 9 print(haha 10 11 #语法错误示范四 12 1 = a 2.逻辑错误(逻辑错误) 1 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) 2 num=input(">>: &q

java学习——异常处理

使用 Java 语言进行软件开发和测试脚本开发时不容忽视的一个问题就是异常处.是否进行异常处理直接关系到开发出的软件的稳定性和健壮性. 异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程. Java通过API中Throwable类的众多子类描述各种不同的异常.因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件.当条件生成时,错误将引发异常. 分类 在 Java 中,所有的异

Java学习--异常处理及其应用类

异常是运行时在代码序列中引起的非正常状况,换句话说,异常是运行时错误.在不支持异常处理的计算机语言中,必须手动检查和处理错误----通常是通过使用错误代码,等等.这种方式既笨拙又麻烦.Java的异常处理避免了这些问题,并且在处理过程中采用面向对象的方式管理运行时错误. 1.异常处理的基础概念 Java异常是用来描述在一段代码中发生的异常情况(也就是错误)的对象.当出现引起异常的情况时,就会创建用来表示异常的对象,并在引起错误的方法中抛出异常的对象.方法可以选择自己处理异常,也可以继续传递异常.无

python 学习 异常处理

异常处理实例 while True: num1 = input('num1:') num2 = input('num2:') try: num1 = int(num1) num2 = int(num2) result = num1 + num2 except Exception as ex: print('出现异常,信息如下:') print(ex) 异常处理类型 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本

Java学习---异常处理的学习

基础知识 任何一门计算机程序设计语言都包括有绝对正确和相对正确的语句.绝对正确: 指任何情况下, 程序都会按照流程正确执行:相对正确: 程序的运行受到运行环境的制约, 在这种情况下, 需要附加检测和控制语句, 保证程序的健壮性. 在Java中, 通过面向对象的方法来处理程序错误,采用异常(Exception)处理机制来处理程序运行中的错误.将程序运行中的所有错误都看成一种异常, 通过对语句块的检测, 一个程序中所有的异常被收集起来放在程序的某一段中处理.如果发生了异常,则这个方法生成一个代表该异

java struts2入门学习---异常处理和类型转换

https://www.cnblogs.com/amosli/p/3530577.html 一.struts2对异常的处理 1.自定义局部异常: <action> <exception-mapping result="sonException" exception="java.lang.ArithmeticException"></exception-mapping> </action> 2.自定义全局异常: <

java学习——异常处理机制

public class ExceptionDemo2 { public static void main(String[] args) { // TODO Auto-generated method stub int i=0; int a[]={1,2,3,4}; for( i = 0; i<5; i++) { try { System.out.print("a[" + i + "]/"+ "=" + (a[i]/i)); } catch

通过异常处理错误-1

Java的基本理念是" 结构不佳的代码不能运行". 发现错误的理想时机是在编译阶段,也就是在你试图运行程序之前.然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决.这就需要错误源能通过某种方式,把适当的信息传递给某个接收者一该接收者将知道如何正确处理这个问题. 改进的错误恢复机制是提供代码健壮性的最强有力的方式.错误恢复在我们所编写的每一个程序中都是基本的要素,但是在Java中它显得格外重要,因为Java的主要目标之-就是创建供他人使用的程序构件.要想创建健壮的系统,它的

读书分享全网学习资源大合集,推荐Python学习手册等三本书「01」

0.前言 在此之前,我已经为准备学习python的小白同学们准备了轻量级但超无敌的python开发利器之visio studio code使用入门系列.详见 1.PYTHON开发利器之VS Code之初识.简介.安装.中文 2.PYTHON开发利器之VS Code 主题.界面美化.快捷键.编辑器技巧 3.PYTHON开发利器之VS Code 常用插件介绍 4.PYTHON开发利器之使用VS Code进行python程序开发 5.1.PYTHON开发利器之使用VS Code+Git进行python