java —— 异常(二)

  上文主要说明了异常的产生、异常的捕获、异常处理流程。程序中的异常是不可以避免的,那么应该怎么去处理异常尤为重要了。

处理异常的方式

  1、只进行捕获,不做任何处理

  

  当异常发生时,上述代码对异常进行了捕获,捕获发生后进入catch子句,catch子句里面没有任何代码,实际上异常并没有得到处理,因此catch子句执行完成后,catch区段之后的代码将“好像没有发生过什么似的”继续执行。换句话说,方式1没有对异常做任何应对,只是将它给(吞)了。这样的做法很危险,因为后续程序可能就会遭遇失败,由于缺少对上述异常的必要处理与记录,直接导致我们定位错误非常困难。

  2、捕获异常,简单的打印

  

  e.printStackTrace()进行异常情况输出,在调试可能会有一定的帮助,但是调试阶段结束后,就不利于程序的维护。更加安全有理的方式是,在屏幕上输出了异常发生的位置与导致异常的原因,同时还将异常详细信息输出到了一个日志文件。

public class ExceptionDemo {
    public static void throwsTest(){
        try {
            Class.forName("java.util.List");
        } catch (ClassNotFoundException e) {//异常处理
            System.out.println("Class.forName() 类加载异常:" + e.getMessage());
            logFile(nfe);

        }
    }
    public static void main(String[] args) {
        throwsTest();
    }
}

  2、throws 异常

   throws 在方法的声明处使用,表示此方法不处理异常,所有的异常交给被调用处进行处理,而调用处也可继续向上递交异常。

public class ExceptionDemo {
    public static void throwsTest() throws ClassNotFoundException{
         Class.forName("java.util.List");
    }
    public static void main(String[] args) throws ClassNotFoundException {
        throwsTest();
    }
}

  此处都没有对异常进行处理,最终有 JVM 都异常处理,进行后台的异常输出。

  3、throw 异常

  throw 主要用于方法体之中,表示人为的抛出一个异常类的实例化对象,常用来抛出自定义的异常,与 throws 配合使用将异常交由调用者处理。     

  

  备注:自定义异常的方式

      

  在正常使用的情况下,很少会定义自己的异常类,但是如果在学习框架,或者是你日后设计框架的时候都有可能定义许多属于此框架的异常类。

  上述的异常,最终的处理形式还是回到了方式2的处理规则上。进行错误信息简单输出,完整信息写入日志文件。

小结:

  不要推诿或延迟处理异常,尽量就地解决他们,就地解决最好,并且需要实实在在的进行处理,而不是只捕捉,不动作。

原文地址:https://www.cnblogs.com/SacredOdysseyHD/p/8411269.html

时间: 2024-10-09 06:53:02

java —— 异常(二)的相关文章

java 异常二、

* 编译时异常的抛出必须对其进行处理 * 运行时异常的抛出可以处理也可以不处理 throws和throw的区别 * a:throws * 用在方法声明后面,跟的是异常类名 * 可以跟多个异常类名,用逗号隔开 * 表示抛出异常,由该方法的调用者来处理 public void setAge(int age) throws RuntimeException,AgeboundException{ .............} * b:throw * 用在方法体内,跟的是异常对象名 * 只能抛出一个异常对

java 异常二

在本程序中,对于除数是-1,也视为是错误的,是无法进行运算的. 那么就需要对这个问题进行自定义的描述. 当在函数内部出现了throw抛出异常对象,那么,就需要给对应的处理动作. 要么在内部try catch处理:要么在函数上声明让调用者处理. 一般情况下,函数内出现异常,函数上需要声明. 如何快速定义异常信息呢? 因为父类中已经把异常信息的操作都完成了. 所以子类只要在构造时,通过super语句将异常信息传递给父类. 那么就可以直接通过getMessage方法获取自定义异常信息了. 自定义异常:

java 异常总结

一:异常结构图及基本概念 Throwable类:所有异常与错误的超类. Error类:程序无法处理的错误,表示运行应用程序中较严重问题,不需要捕获 Exception类:程序本身可以处理的异常,可以捕获 RuntimeException及其子类:可以捕获此异常,也可以不捕获.建议不捕获. 非运行时异常:必须捕获的异常. 二 try...catch...finally 1 try{ 2 //监控有可能出现异常的代码 3 }catch(Exception e){ 4 //捕获异常后执行的代码 5 }

[Java面试二]Java基础知识精华部分.

一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础: JAVA

Java异常(1)

一.要达到的效果 如果出现错误而是某些操作没有完成,程序应该: (1)返回到一种安全状态,并能够让用户执行一些其他的命令. (2)允许用户保存所有操作的结果,并以适当的方式终止程序. 异常处理的任务就是将控制权从错误产生的地方转移到能够处理这种情况的错误处理器   二.异常分类: 1.Throwable - ---------Error -     - -     ------- XXXX -      - -      ----- XXXXX ---Exception -      - -  

浅谈java异常[Exception]

本文转自:focusJ 一. 异常的定义 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常.绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败.之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意. 记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也

Java - 异常解析基础

java提高篇(十六)-----异常(一) 一.为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率.虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用.有异常就说明程序存在问题,有助于我们及时改正.在我们的程序设计当做,任何时候任何地方因为任何原因都有可能会出现异常,在没有异常机制的时候我们是这样处理的:通过函数的返回值来判断是否发生了异常(这个返回值通常是已经约定好了的),调用该函数的程序负责检查并且分析返回值.虽然可以解决异常问题,但是

JAVA基础教程之JAVA异常机制

今天我们主要来说一说JAVA异常机制方面的内容.自设JAVA学习群457036818,大家可以交流一下 一. 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误.本文主要传授的是一些滚与Java语言的异常处理.Java语言的异常处理框架,是Java语言健壮性的一个重要体现. Java把异常当作对象来处理,而且定义一个基类java.lang.Throwable作为所有异常的超类.在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception.J

java异常 之 异常的层次结构

一:起因 (1)最近在用java处理分析各种数据,碰到了一些异常,如parse()异常 ParseException,valueOf()NumberFormatException  IllegalArgumentException异常,NullPointerExcetion  IndexOutOfBoundsExceptionFileNotFoundException等 (2)异常不能任意捕获的,不能任意的写catch(***Exceptionex){} ;只有,有可能抛出相应的异常,才写cat

Java异常封装(自定义错误码和描写叙述,附源代码)

真正工作了才发现.Java里面的异常在真正工作中使用还是十分普遍的. 什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己能够定义错误码和异常描写叙述. 以下小宝鸽就为大家介绍一个Java异常简单封装的样例. 在给出异常分装样例之前.须要给大家普及Java里面的checked异常和unchecked异常的个概念. 一.checked异常和unchecked异常 这里之所以让大家清楚checked异常和unchecked异常概念,是由于:待会我们的异常是