异常分类,异常抛出位置

异常(Exception)

在Java中用类的形式对不正常进行描述和封装对象,描述不正常的情况的类成为以异常类。并且将正常代码流程和问题处理代码相分离,提高了阅读性。

问题很多,意味着描述的类也很多,将其进行向上概括抽取,形成异常体系。

Throwable:无论是Error还是异常都能在问题发生时抛出,让调用者知道并处理

(一)、一般不可处理的,Error;

(二)、可处理的,Exception。

class FushuIndexExexception extends Exception

{

FushuIndexExexception()

{}

}//自己定义的函数

class Demo

{

public int method(int []arr ,int index) throws FushuIndexExexception//在函数标注处用throws,表示抛出

{

if(index>=2)

{

throw new NullPointerException("数组的引用不能为空");//在函数内注处用throws,表示抛出

}

if(index<= 0)

{

throw new FushuIndexExexception();

}

return index;

}

}

public class text {

public static void main(String[] args) throws FushuIndexExexception//在函数标注处用throws,表示抛出

{   int []arr=new  int[20];

Demo d=new Demo();

int num=d.method(arr,-10);

System.out.println(num);

}

}

异常的分类:

(一)编译时被检测到异常:只要是Exception和其子类都要,除了特殊子类RuntimeException体系;

(这种问题在一出现实,希望在编译时被检测,让这种问题有对应的处理方式)

(二) 编译时检测不到异常(运行时检测到异常):就是Exception中的RuntimeException和其子类;(这种问题的发生无法让功能继续,运算无法进行,更多是因为调用的原因造成的,或者引发内部状态的改变导致的,这种问题一般不处理,让编译通过,让编译时强行停止,进行编码修改)

在自定义异常时,要么继承Exception,要么继承RuntimeException

throws和throw的区别:

  1. throw使用在函数内;

throws使用在函数上;

  1. throws抛出异常类,可以抛出多个,用逗号隔开;

throw抛出的是异常对象

时间: 2024-08-24 23:22:26

异常分类,异常抛出位置的相关文章

Atitti 跨语言异常的转换抛出 java js

异常的转换,直接反序列化为json对象e对象即可.. Js.没有完整的e机制,可以参考java的实现一个stack层次机制的e对象即可.. 抛出RuntimeException vs 还是e.cause; 应该抛出完整e,因为runtimeE可能还有一些说明.. 那如何捕获异常,可以判断,如果是RuntimeException,那么捕获他的cause就可.. function convert2jsEx(data) { if(typeof data=="string") { try{ d

java如何解决异常是应该抛出还是应该处理的问题

情况如上图,问g()应该抛出f()的异常还是处理掉f()的异常? 一.如果h()无需知道g()是否成功或者是否出错,或者h()对g()出错与否不能控制和解决,那么g()就无需向h()报告异常 二.如果h()在运行中需要知道g()是否成功以及可以对g()出错进行处理,那么g()不能自己处理掉异常,应该往上抛出. 三.g()可以将f()的异常如下处理:      private void g(){ try { f(); } catch (Exception e) { throw new Runtim

java中异常处理机制 throw抛出自定义业务逻辑异常 throws继续抛出 catch捕获后会自动继续抛向调用方法

package com.swift; public class Exception_TestC { public static void main(String[] args) { /* * 第5题: 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个 * 方法a,请在这个方法中调用b,然后抛出异常.在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕 捉异常的信息.Java异常的处理机制 * * 如果try或cat

JS异常捕获和抛出

try...catch 用来异常捕获(主要适用于IE5以上内核的浏览器,也是最常用的异常捕获方式) 使用onerror时间捕获异常,这种捕获方式是比较古老的一中方式,目前一些主流的浏览器暂不支持这种 捕获方式. 捕获异常的语法如下: try { //运行代码 } catch(err) { //处理错误 } 测试示例代码如下,abc是一个未定义的函数,会抛出异常,异常信息会被try catch,进入catch语句中执行 var msg = ""; try{ abc(); }catch(e

异常的数字抛出,为什么会出现错误?(未解决)

#include <iostream> using namespace std; class A { public: A(int a, int b) { this->a = a; this->b = b; cout << "我是快乐的构造函数.\n"; } ~A() { cout << "我是无能的析构函数\n"; } protected: private: int a; int b; }; void divide()

c# throw抛出上一个异常

catch(exception e) { throw; } 不仅抛出这次的异常,也抛出之前的异常. 用法示例:函数A调用函数B,A用到此throw时,B中发生的异常也会继承过来. catch(exception e) { throw e; } 当调用异常位置的时候,仅显示这个位置. 在上个用法中,B中的位置不会出现. 原文地址:https://www.cnblogs.com/gaara-zhang/p/9215031.html

C++学习40 抛出自己的异常

throw 是C++中的关键字,用来抛出异常.如果不使用 throw 关键字,try 就什么也捕获不到:上节提到的 at() 函数在内部也使用了 throw 关键字来抛出异常. throw 既可以用在标准库中,也可以用在自定义的函数中,抛出我们期望的异常.throw 关键字语法为: throw exceptionData; exceptionData 是“异常数据”的意思,它既可以是一个普通变量,也可以是一个对象,只要能在 catch 中匹配就可以. 下面的例子演示了如何使用 throw 关键字

Java中抛出的各种异常

目录(?)[-] 引子 JAVA异常 处理异常机制 捕获异常trycatch 和 finally try-catch语句 trycatch-finally语句 try-catch-finally 规则异常处理语句的语法规则 trycatchfinally语句块的执行顺序 抛出异常 throws抛出异常 使用throw抛出异常 Throwable类中的常用方法 Java常见异常 runtimeException子类 IOException 其他 自定义异常 1. 引子 try…catch…fina

4.异常捕获后再次抛出

4.异常捕获后再次抛出 情况一:捕获后抛出原来的异常,希望保留最新的异常抛出点--fillStackTrace 情况二:捕获后抛出新的异常,希望抛出完整的异常链--initCause 1.捕获后重新抛出捕获的异常 在函数中捕获了异常,在catch模块中不做进一步的处理,而是向上一级进行传递 catch(Exception e){ throw e; } public class ReThrow { public static void f()throws Exception{ throw new