iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中抛出异常和捕获异常有什么区别
  • 821
分享到

Java中抛出异常和捕获异常有什么区别

2023-06-15 09:06:13 821人浏览 薄情痞子
摘要

这篇文章主要介绍Java中抛出异常和捕获异常有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!抛出异常:创建异常对象,封装异常信息然后通过throw将异常对象传递给调用者。不对异常进行处理只对异常进行抛出是非常

这篇文章主要介绍Java中抛出异常和捕获异常有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

抛出异常:

创建异常对象,封装异常信息然后通过throw将异常对象传递给调用者。

不对异常进行处理只对异常进行抛出是非常不负责任的表现可以称为渣男。

但是可以通过主动抛出异常对一些JVM虚拟机识别不出来的异常进行抛出。

手动抛出异常举例

public static void main(String[] args) throws Exception {        int age = 0;        age = -100;        if(age<0)        {            Exception e = new Exception();//创建异常对象            throw e;//抛出异常        }        System.out.println(age);    }

这个例子在常理中年龄是不能小于零的所以要手动抛出异常。

捕获异常:

对异常进行捕获然后进行指定方式的处理

throw与throws的区别:

抛出的东西不同:throw抛出的是具体的异常对象,而throws抛出的是抽象的异常类。

使用位置不同:throw一般用在方法体中,也可用在代码块中,throws只能用在方法声明括号后面。

Java中的异常处理:何时抛出异常,何时捕获异常?

在看hadoop源码时,想想自己最近在做的那个系统,发现很多异常处理的方式不对,还是按照传统的异常处理方式(即:采用返回值来标识程序出现的异常情况)。而hadoop中很多方法的声明是有异常抛出的,而我的系统中的很多方法的声明都没有抛出异常。只是判断了异常情况,并输出了错误提示,但是并没有抛出异常。

org.apache.hadoop.hdfs.protocol包下的Block类的readFields()方法:

public void readFields(DataInput in) throws IOException {    this.blockId = in.readLong();    this.numBytes = in.readLong();    this.generationStamp = in.readLong();    if (numBytes < 0) {      throw new IOException("Unexpected block size: " + numBytes);//抛出异常,要是的话就不会抛出,而只是System.out.println错误提示,    }

1.如果方法声明名里面有throws异常,那么方法体里面可以不抛出异常。

因为可以在方法声明中包含异常说明,但实际上却不抛出!这样做的好处是,为异常先占个位置,以后就可以抛出这种异常而不用修改修改已有的代码。在定义抽象基类和接口时这种能力很重要,这样派生类或接口实现类就能够抛出这些预先声明的异常。

2.为什么有的方法声明里面没有throws,但方法体里面却抛出了异常?

从RuntimeException继承的异常,可以在没有异常说明throws的情况下被抛出!对于Runtime异常(也称为非检查的异常unchecked exception),编译器不需要异常说明。只能在代码中忽略RuntimeException(及其子类)类型的异常,其他类型的异常的处理都是由编译器强制实施的。究其原因,RuntimeException代表的是编程错误。

3.运行时异常会被Java虚拟机自动抛出!

1. 异常处理基础

1 System.out.println是高代价的。调用System.out.println会降低系统吞吐量。

2 在生产环境中别用异常的printStackTrace()方法。printStackTrace默认会把调用的堆栈打印到控制台上,在生产环境中访问控制台是不现实的。

2. 异常处理基本原则

1 如果你不能处理异常,不要捕获该异常。

2 如果要捕获,应在离异常源近的地方捕获它。

3 不要吞没你捕获的异常。

*(就是捕获的异常,但是什么也不做)

4 除非你要重新抛出异常,否则把它log起来。

5 当一个异常被重新包装,然后重新抛出的时候,不要打印statck trace。

6 用自定义的异常类,不要每次需要抛出异常的时候都抛出java.lang.Exception。方法的调用者可以通过throws知道有哪些异常需要处理--所以它是自我描述的。

7 如果你编写业务逻辑,对于终端用户无法修复的错误,系统应该抛出非检查的异常(unchecked exception);如果你编写一个第三方的包给其他的开发人员用,对于不可修复的错误要用需要检查的异常(checked exception)。

8 绝对不要因为写throws语句会让你用起来不舒服,而不声明需要检查的异常。

9 应用级别的错误或不可修复的系统异常用非检查的异常(unchecked exception)抛出。

*(注意是错误,意味着不可修复,比如配置文件错误)

10 根据异常的粒度组织你的方法

以上是“Java中抛出异常和捕获异常有什么区别”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java中抛出异常和捕获异常有什么区别

本文链接: https://www.lsjlt.com/news/279382.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中抛出异常和捕获异常有什么区别
    这篇文章主要介绍Java中抛出异常和捕获异常有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!抛出异常:创建异常对象,封装异常信息然后通过throw将异常对象传递给调用者。不对异常进行处理只对异常进行抛出是非常...
    99+
    2023-06-15
  • 浅谈抛出异常和捕获异常的一些区别
    小总结 抛出异常: 创建异常对象,封装异常信息然后通过throw将异常对象传递给调用者。 不对异常进行处理只对异常进行抛出是非常不负责任的表现可以称为渣男。 但是可以通过主动抛出异常...
    99+
    2022-11-12
  • oracle抛出异常和捕获异常的方法是什么
    在Oracle中,抛出异常和捕获异常的方法是通过使用PL/SQL代码块来实现的。1. 抛出异常:在PL/SQL代码块中,可以使用关键...
    99+
    2023-10-20
    oracle
  • Python抛出异常和声明异常有什么区别
    在Python中,抛出异常和声明异常是两个不同的概念。抛出异常是指在程序运行过程中,当发生错误或异常情况时,使用`raise`关键字...
    99+
    2023-10-11
    Python
  • C++中的异常抛出和捕获方式
    目录C++ 中的异常语法抛出类型声明栈自旋在 C 语言中,如果发生错误,上级函数要进行出错处理,层层上传,容易造成过多的出错处理代码,并且传递的效率比较低下。 C++ 中的异常 C+...
    99+
    2022-11-13
  • Java异常分类处理抛出捕获操作详解
    目录什么是异常1.算术异常2.数组越界异常3.空指针异常异常的分类异常的抛出(throw关键字)异常的捕获throws关键字try catch关键字finally关键字总结什么是异常...
    99+
    2022-11-13
  • Java异常怎么声明和抛出
    小编给大家分享一下Java异常怎么声明和抛出,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!常用的java框架有哪些1.SpringMVC,Spring Web M...
    99+
    2023-06-14
  • java中的不抛出的异常是什么
    RuntimeException与其子类和错误(Error)不是必须要捕获或抛出。Java异常Throwable分为两类:Error和Exception,Error类是错误,程序本身不能处理的。Exception有分为两类:IOExcept...
    99+
    2014-12-27
    java入门 java 不抛出 异常
  • java编译时异常和运行时异常有什么区别
    Java中的异常分为编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。编译时异...
    99+
    2023-08-28
    java
  • C#使用throw和throw ex抛出异常的区别介绍
    通常,我们使用try/catch/finally语句块来捕获异常,就像在这里说的。在抛出异常的时候,使用throw和throw ex有什么区别呢? 假设,按如下的方式调用几个方法: ...
    99+
    2022-11-13
    C#使用throw抛出异常 C#使用throw ex抛出异常
  • java手动抛出异常的方法是什么
    在Java中,可以使用`throw`关键字手动抛出异常。具体的用法是在代码中使用`throw`关键字,后跟一个`Exception`...
    99+
    2023-09-27
    java
  • java中断言与异常有什么区别
    本篇文章给大家分享的是有关java中断言与异常有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编...
    99+
    2023-06-14
  • java全局异常捕获的方法是什么
    Java全局异常捕获的方法是使用try-catch块来捕获异常。在Java中,可以使用捕获异常的方式来处理程序中的异常情况。全局异常...
    99+
    2023-10-21
    java
  • Java中捕获线程异常的方式有哪些
    这篇文章主要介绍“Java中捕获线程异常的方式有哪些”,在日常操作中,相信很多人在Java中捕获线程异常的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中捕获线程异常的方式有哪些”的疑惑有所...
    99+
    2023-07-04
  • 浅谈Thread.sleep()为什么要抛出中断异常
    从场景说起 假设sleep()方法不抛出中断异常,也就是线程没有中断响应能力,会怎么样? 考虑如下场景: 线程A:sleep中 线程B:A别睡了,要关机啦(向A发送中断信号) 线程A...
    99+
    2023-05-17
    Thread.sleep()中断 Thread.sleep()中断异常
  • JS异常抛出和处理的方法是什么
    今天小编给大家分享一下JS异常抛出和处理的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。抛出异常在 js 中,有时...
    99+
    2023-07-04
  • Python异常捕获和处理的方法是什么
    1 | 语法错误指解析代码时出现的错误。当代码不符合Python 语法规则时,Python解释器在解析时就会报出 SyntaxError 语法错误,与此同时还会明确指出最早探测到错误的语句。例如:print "Hello,Worl...
    99+
    2023-05-23
    Python
  • Java中检查型异常与非检查型异常的区别是什么
    本篇文章给大家分享的是有关Java中检查型异常与非检查型异常的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。     ...
    99+
    2023-05-31
    java 别是 ava
  • php异常处理和错误处理有什么区别
    PHP异常处理和错误处理之间有一些区别。1. 异常处理是一种更高级别的错误处理机制,允许程序捕获和处理运行时错误,而不会导致程序终止...
    99+
    2023-08-29
    php
  • python中异常和错误的区别有哪些
    在Python中,异常和错误是两个不同的概念。1. 异常(Exception):是程序在运行时可能遇到的一些意外情况或错误。当程序发...
    99+
    2023-08-14
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作