-
Java异常分类
2012-11-27 15:46:481 基本概念 java.lang.Throwable是所有异常的根 ...一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。 2.1...欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习
1 基本概念
java.lang.Throwable是所有异常的根
java.lang.Error是错误信息
java.lang.Exception是异常信息
2 Exception
一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。
2.1 Checked异常只有java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显示处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。这体现了Java的设计哲学:没有完善错误处理的代码根本没有机会被执行。对Checked异常处理方法有两种
1 当前方法知道如何处理该异常,则用try...catch块来处理该异常。
2 当前方法不知道如何处理,则在定义该方法是声明抛出该异常。package cn.xy.test; import java.io.IOException; /** * Checked异常测试方法 * @author 公众号「JAVA前线」 * */ public class CheckedExceptionMethods { // 总异常类,既有checkedException又有RuntimeException,所以其中的checkedException必须处理 public void method1() throws Exception { System.out.println("我是抛出异常总类的方法"); } // 捕获并处理这个异常 public void testMethod1_01() { try { method1(); } catch (Exception e) { e.printStackTrace(); } } // 把异常传递下去 public void testMethod1_02() throws Exception { method1(); } public void testMethod1_03() throws Exception { throw new Exception(); } public void testMethod1_04() { try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); } } // checkedException典型代表IOException public void method2() throws IOException { System.out.println("我是抛出IO异常的方法"); } public void testMethod2_01() { try { method2(); } catch (Exception e) { e.printStackTrace(); } } public void testMethod2_02() throws Exception { method2(); } }
我们比较熟悉的Checked异常有
Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.IOException2.2 RuntimeException
Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
package cn.xy.test; /** * 运行时异常测试方法 * @author 公众号「JAVA前线」 * */ public class RuntimeExcetionMethods { public void method3() throws RuntimeException { System.out.println("我是抛出运行时异常的方法"); } public void testMethod3_01() { method3(); } public void testMethod1_02() { throw new RuntimeException(); } }
我们比较熟悉的RumtimeException子类:
Java.lang.ArithmeticException
Java.lang.ArrayStoreExcetpion
Java.lang.ClassCastException
Java.lang.IndexOutOfBoundsException
Java.lang.NullPointerException
3 Error当程序发生不可控的错误时,通常做法是通知用户并中止程序的执行。与异常不同的是Error及其子类的对象不应被抛出。
Error是throwable的子类,代表编译时间和系统错误,用于指示合理的应用程序不应该试图捕获的严重问题。
Error由Java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等。程序对其不做处理。
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习
-
C++ 标准异常类和自定义异常类
2019-05-11 14:01:37//标准异常类 #include<iostream> //头文件 #include<stdExcept> using namespace std; /* 标准异常类体系如下: 缩进层次表示继承关系 exception #include <exception> runtime_error #...show you the code
//标准异常类 #include<iostream> //头文件 #include<stdExcept> using namespace std; /* 标准异常类体系如下: 缩进层次表示继承关系 exception #include <exception> runtime_error #include <stdexcept> overflow_error underflow_error range_error logic_error #include <stdexcept> invalid_argument length_error out_of_range domain_error bad_alloc <new> bad_exception bad_cast <typeinfo> bad_typeid <typeinfo> 它们都是类。需要引用的头文件已经标注。没有标的,那么它的头文件就是上一层的头文件。 */ //自定义异常类,继承自exception class myException :public exception { public: myException(char* c) { m_p = c; } //what()函数返回错误信息 virtual char* what() { cout << "异常类型为 myException: "<< m_p << endl; return m_p; } private: char *m_p; }; void test_func() { throw myException("出错啦!"); //throw bad_alloc(); } int main() { try { test_func(); } catch (myException& e) { e.what(); } catch (bad_alloc& e) { e.what(); } catch (...) { cout << "Unknown Error" << endl; } system("pause"); return 0; }
-
Java 异常分类
2019-06-21 15:01:05异常分类:Error 和 Exception Error Error 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果 出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。 ...异常分类: Error 和 Exception
Error
Error 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果
出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。
Exception(RuntimeException、CheckedException)
Exception 又有两个分支,一个是运行时异常 RuntimeException,一个是 CheckedException。
RuntimeException : NullPointerException 、 ClassCastException ; 一定是代码写的有问题.
CheckedException : IOException、SQLException。 RuntimeExceptionThrow 和 throws 的区别:
位置不同
throws 用在函数上,后面跟的是异常类,可以跟多个;
而 throw 用在函数内,后面跟的 是异常对象
功能不同
throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;
throw 抛出具体的问题对象,执行到 throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。
也就是说 throw 语句独立存在时,下面不要定义其他语句,因为执行不到。
throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出了异常,
执行 throw 则一定抛出了某种异常对象。
两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
-
java自定义异常类
2018-08-05 20:44:16简单介绍一下java中自定义异常类的使用 背景:这里我简单模拟登陆操作,检测到密码不正确则抛出异常 自定义异常类的使用步骤如下: 1、自定义异常类继承Exception类 /** * 自定义异常类 */ public class ...简单介绍一下java中自定义异常类的使用
背景:这里我简单模拟登陆操作,检测到密码不正确则抛出异常自定义异常类的使用步骤如下:
1、自定义异常类继承Exception类/** * 自定义异常类 */ public class MyException extends Exception { //异常信息 private String message; //构造函数 public MyException(String message){ super(message); this.message = message; } //获取异常信息,由于构造函数调用了super(message),不用重写此方法 //public String getMessage(){ // return message; //} }
2、在要抛出异常的函数使用throws关键字
/** * 在需要抛出异常的地方使用异常类 */ public class UseMyException { private String name; private String password; public UseMyException(String name,String password){ this.name = name; this.password = password; } public void throwException(String password) throws MyException{ if (!this.password.equals(password)){ throw new MyException("密码不正确!"); } } }
3、测试,使用try-catch处理异常
/** * 测试异常 */ public class TestException { @org.junit.Test public void test(){ UseMyException ex = new UseMyException("admin","123"); try{ ex.throwException("1234"); }catch (MyException me){ System.out.println("MyException:"+me.getMessage()); } } }
自定义异常类的使用其实也比较简单,有什么问题欢迎一起讨论~
-
java异常分类
2018-12-24 20:37:32稍后还可以看到,如果java中内置的异常类不能够满足需求,我们可以创建自己的异常类。下图就是一个java异常层次的一个简化示意图。 需要注意的是,所有的异常都是由Throwable继承而来,但在下-层立即分解为两个... -
自定义异常类
2018-05-23 19:32:57为什么要自定义异常类?当我们在输入成绩,输入工资,取款的时候,往往都有一个范围,而这个范围不是JVM能够识别的,因此在输入的时候就容易出错,因此在这些时候JDK中的异常无法满足我们的需求,我们只能自己定义... -
java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类
2015-12-09 14:10:08【0】README0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类 的相关知识; 0.2)异常处理的任务: 就是将控制权从错误产生的地方转移... -
异常-自定义异常&异常类的抛出
2019-03-11 23:30:11异常类的抛出自定义异常理论异常函数 :调用异常函数 自定义异常理论 例如负数角标这种异常在java中并没有定义过,这时候就要按照java异常的创建思想,面向对象,将负数角标进行自定义的描述。 这种自定义的问题描述... -
Java异常层次与异常分类
2019-02-26 17:25:32Java简化的异常层次结构如上,需要注意的是所有类都是从Throwable继承而来,下一层则分为两个结构,Error和Exception。 Error类层次描述了Java运行时系统的内部错误和资源耗尽错误,这种错误除了简单的报告给用户,... -
异常分类和异常处理
2018-08-07 09:35:17异常概述 在java中程序的运行往往会因为设计或者编写过程中引起一些错误的操作,这些错误信息主要包含两种类型 错误(Error):通常是JVM内部...Error和Exception都是从Throwable类继承过来 异常分类(Excepti... -
JAVA异常分类
2018-11-09 22:09:371、JAVA中的异常也是对象,jdk中也提供了很多异常类 (1)包图中java.lang (2)Error错误的话,一般来讲,就不是代码可以处理的问题了 (3)RuntimeException有很多子类,中NullPointerException是空指针异常... -
java异常分类和常见异常
2017-02-20 21:51:26异常类分两大类型: Error类代表了编译和系统的错误,不允许捕获; Exception类代表了标准Java库方法所激发的异常。 Exception类还包含运行异常类Runtime_Exception和非运行异常类Non_RuntimeException这两... -
Java异常处理之异常类继承层次
2020-02-10 14:39:37目录一、异常类继承层次(1)Throwable类(2)Error和Exception(3)受检查异常和运行时异常 一、异常类继承层次 异常封装成为类Exception,此外,还有Throwable和Error类,异常类继承层次如图19-1所示。 (1)... -
Python3异常处理, raise异常,自定义异常类
2018-11-29 18:15:37except 异常类a as e: # e 是一个变量,记录异常类的信息,通常是Exception 如果发生异常a,执行尝试处理异常a的操作 except 异常类b as f: # 可以定义一个或多个except 语句 如果发生异常a,... -
java异常4 手动抛出异常与自定义异常类
2020-02-25 21:59:561,Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要使用人工创建并抛出。 2首先要生成异常类对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。 可以抛出的异常必须是... -
django 异常分类
2017-08-05 09:23:18Django异常 DJango会抛出一些它自己的异常,...Django核心异常类定义在django.core.exceptions中。 ObjectDoesNotExist _exception _ObjectDoesNotExist[source] DoesNotExist异常的基类;对ObjectDoesNot -
java 异常分类和处理机制
2018-06-01 15:08:26一、背景介绍 程序在运行过程中发生错误或异常情况是不可避免的,如果每一个运行时错误都由...Java语言定义了很多异常类,将运行错误和异常的信息和处理方法封装在了异常类中,帮助程序员检查和控制异常。即J... -
java常用异常类
2017-08-01 20:05:22异常类,常用异常类的含义 -
Java异常类
2018-08-09 21:24:19异常类是个什么东西!?为什么要有异常这个东东??不够用了能不能自己造一个? 举个例子: 假设今天早晨你早早的出门,骑着单车去买新鲜的蔬菜、肉类总之就是你打算今天做一顿丰盛的午餐,你呢,要去的菜市场要过... -
常见的异常类有哪些?
2019-06-01 00:21:06常见的异常类有哪些? 异常非常多,Throwable 是异常的根类。 Throwable 包含子类 错误-Error 和 异常-Exception 。 Exception 又分为 一般异常和运行时异常 RuntimeException。 运行时异常不需要代码显式捕获... -
JAVA 自定义异常类
2018-06-08 17:53:15自定义异常类 在编写程序时可以扩展Exception类定义自己的异常类,然后根据程序的需要来规定哪些方法产生这样的异常。个方法在声明时可使用throws关键宇声明要产生的若干个异常,并在该方法中具体给出产生异常的... -
python--异常处理-主动引发异常-自定义异常类
2019-02-17 21:24:20一.主动引发异常 并非只有在程序运行出错时才可以引发异常,python允许在代码中使用raise或assert语句主动引发异常。 1.raise语句 ...raise 异常类实例对象 #引发异常类实例对象对应的异常 raise ... -
java 异常类
2015-04-12 10:40:03在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。 Java异常体系结构呈树状,其层次结构图如图 1所示: Thorwable类所有异常和错误的超类,有两个子类Error和... -
java中Throwable类是所有异常类的父类
2019-12-03 18:16:41Error异常和Exception异常都继承于throwable异常类。 throwable异常类下面分为两个子类:error异常(又名系统异常),和Exception异常(编码,环境,操作异常) Error异常是系统异常(都是非检查异常),主要包括... -
Python异常捕获及自定义异常类
2019-05-14 00:00:45Python异常捕获及自定义异常类 一、什么是异常? 异常是一个与业务逻辑无关的BUG,一个潜在错误或者网络错误事件等,如:尚未实现的函数,缩进错误,Python语法错误等.该事件可能会在程序执行过程中发生,影响程序的... -
自定义异常类、运行时异常与编译时异常
2016-10-30 00:07:05sun提供了很多的异常类给我们用于描述程序中各种的不正常情况,但是sun给我们提供异常类还不足以描述我们现实生活中所有不正常情况,那么这时候我们就需要自定义异常类。1、需求: 模拟feiQ上线的时候,如果没有插上网... -
自定义异常类!
2018-02-28 11:01:51一、前言jdk中本身提供丰富的异常处理类(参见JDK提供的异常类),但项目中还会自定义很多异常,主要因为jdk提供的异常只正对代码本身需求做的定义,对于实际需求要根据业务来自定义异常(年龄大于200、用户不存在)... -
JAVA中的异常处理机制及异常分类
2017-04-01 16:18:27JAVA的异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他...