通过异常处理错误

【RT-DETR有效改进】利用MobileNetV3替换Backbone(轻量化网络结构,提点) 本文给大家带来的改进机制是,其主要改进思想集中在结合硬件感知的网络架构搜索(NAS)和NetAdapt算法,以优化移动设备CPU上的性能。它采用了新颖的架构设计,包括反转残差结构和线性瓶颈层,以及新的高效分割解码器Lite Reduced Atrous Spatial Pyramid Pooling(LR-ASPP),以提升在移动分类、检测和分割任务上的表现。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性。 阅读详情

异常处理的优点之一是你可以在某处集中精力处理你要解决的问题,而在另一处处理你编写的这段代码中产生的错误。对于异常情形,在 当前环境下 无法获得必要的信息来解决问题,而是从当前环境跳出,并把问题交给上一级环境。


当抛出异常后,同其他对象的创建一样,使用new在堆上创建异常对象,当前的执行路径被终止,并且从当前环境中弹出对异常对象的引用。此时, 异常处理机制 接管程序,异常处理程序将程序从错误状态中恢复,使程序要么换一种方式执行,要么继续运行。


异常参数:所有标准的异常类都有两个构造器:一个是默认构造器,另一个是接受字符串作为参数,以便能把有关信息放入异常对象的构造器。


异常处理模型:终止和恢复

终止模型:java支持终止模型,一旦异常被抛出,就表明错误已经无法挽回,也就不能回来继续执行。

恢复模型:通常希望异常被处理之后能继续执行程序。


1. 处理异常机制

异常处理机制:抛出异常、捕获异常


抛出异常:当一个方法出现错误引发异常时。方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

throws抛出异常:如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明要抛出的异常类型。throws将异常抛出给调用者后,如果调用者不想处理该异常,可以继续向上抛出但最终要有能够出来了该异常的调用者。



捕获异常:方法抛出异常后,运行时系统转为寻找合适的异常处理器。潜在的异常处理器是异常发生时一次存留在调用栈中的方法集合。运行时系统从发生异常的方法开始,一次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。反之,java程序终止。


2 . 捕获所有的异常

Exception 是与编程有关的所有异常类的基类,不会包含太多具体的信息,不过可以调用它从其基类Throwable继承的方法。

String getMessage() //返回Throwable的详细消息字符串
String getLocalizedMessage() //返回Throwable的本地化描述
String toString() //返回此Throwable的简短描述
void printStackTrace()//将此Throwable及其追踪输出至标准错误流
void pritnStackTrace(PrintStream) //将此Throwable及其追踪输出到指定的输出流
void printStackTrace(java.io.PrintWriter) //将此Throwable及其追踪输出到指定的PrintWriter

1.1 异常链

在捕获一个异常后抛出另一个异常,并且希望把原始异常的信息保存下来,这就称为异常链。


现在所有的Throwablede的子类在构造器中都可以接受一个cause作为参数,这个cause就用来表示原始异常,这样通过把原始异常传递给新异常,即使在当前位置创建并抛出了新的异常,也能通过这个异常链追踪到异常最初发生的位置。在Throwable子类中,只有三种基本的异常类提供了带参数的cause参数的构造器,就是Exception、Error、RuntimeException。如果把其他类型的异常链接起来,应该使用initCause()方法而不是构造器。


3. java 标准异常

Throwable 对象可以分为两种类型:Error用来表示编译时和系统错误,Exception 是可以被抛出的基本类型。


Error:是程序无法处理的错误,表示运行应用程序中较严重的问题。大多数错误与编写者执行的操作无关,而表示代码运行时JVM出现问题。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时。这些错误时不可查的,因为他们在应用程序的控制和处理能力之外。Exception是程序本身可以处理的异常。java的异常(Excdeption和Error)分为可查的异常和不可查的异常。


可查异常(编译器要求必须处置的异常):除RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。它们的特点是JAVA编辑器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。


不可检查的异常。包括运行时异常和错误。


运行时异常会自动被java虚拟机抛出,这些异常都是从RuntimeException类继承而来。 只能在代码中忽略RuntimeException类型的异常,其他类型异常的处理都是由编译器强制实施的。因为RuntimeException 代表的是编程错误。


4.使用finally进行清理

finally字句总能得到执行,它用来将除内存以外的资源恢复到他们的初始状态,需要清理的资源包括:已经打开的文件或网络连接,在屏幕上画的图形等。当在try块或catch中遇到return语句时,finally语句将在方法返回之前被执行。有四种情况,finally不会被执行:


  1. 在finally语句块中发生了异常
  2. 在前面的代码中使用了Systen.exit()退出程序
  3. 程序所在的线程死亡
  4. 关闭CPU

从finally中返回,有可能会导致异常的丢失。


5.异常的限制

当覆盖方法的时候,只能抛出在基类方法的异常说明里列出的那些异常。


派生类的构造器不能捕获基类构造器所抛出的异常。当抛出异常时,编译器不会创建对象。不能从异常失败中“恢复”,因为没有基类子对象。

package exception;
//方法被覆盖时,只能抛出在基类方法的异常说明里列出来的那些异常。 
class BaseballException extends Exception {}
class Foul extends BaseballException {}
class Strike extends BaseballException {}

abstract class Inning {
public Inning() throws BaseballException {}
public void event() throws BaseballException {
}
public abstract void atBat() throws Strike, Foul;
public void walk() {} 
}

class StormException extends Exception {}
class RainedOut extends StormException {}
class PopFoul extends Foul {}

interface Storm {
public void event() throws RainedOut;
public void rainHard() throws RainedOut;
}

public class StormyInning extends Inning implements Storm {
//异常限制对构造器不起作用,可以为构造器添加新的异常,但是派生类构造器的异常说明必须包含基类构造器的异常说明
//派生类构造器不能捕获基类构造器抛出的异常
public StormyInning()
 throws RainedOut, BaseballException {}
public StormyInning(String s)
 throws Foul, BaseballException {}
  //基类方法未抛出异常,所以导出类不能抛出异常
 //void walk() throws PopFoul {} //Compile error
//接口不能为现存的来自基类的方法增加异常
//! public void event() throws RainedOut {}
public void rainHard() throws RainedOut {}
//可以不抛出任何异常,即使基类中定义了异常
public void event() {} 
// Overridden methods can throw inherited exceptions:
//重载的方法可以抛出继承的异常
public void atBat() throws PopFoul {}
public static void main(String[] args) {
 try {//仅捕获这个类所抛出的异常
   StormyInning si = new StormyInning();
   si.atBat();
 } catch(PopFoul e) {
   System.out.println("Pop foul");
 } catch(RainedOut e) {
   System.out.println("Rained out");
 } catch(BaseballException e) {
   System.out.println("Generic baseball exception");
 }

 try {
   // 向上转型
   Inning i = new StormyInning();
   i.atBat();
   //必须捕获来自基类方法的异常
 } catch(Strike e) {
   System.out.println("Strike");
 } catch(Foul e) {
   System.out.println("Foul");
 } catch(RainedOut e) {
   System.out.println("Rained out");
 } catch(BaseballException e) {
   System.out.println("Generic baseball exception");
 }
}
} 



6.异常匹配


抛出异常时,异常处理系统会按照代码书写顺序找出最近的处理程序,当找到匹配的处理程序后,将不再会查找。查找的时候并不要求抛出的异常同处理程序所声明的异常完全匹配。派生类的对象也可以匹配其基类的处理程序。

搞懂 SAPUI5 Fiori 应用的 OData 授权维护:从 IWSG、IWSV 到 S_SERVICE 的完整实践 本文探讨了SAP Fiori项目中常见的授权问题及其解决方案。文章指出,开发人员常误将OData服务访问问题归咎于前端代码或配置,而实际上多因授权默认值未正确带入角色所致。详细分析了IWSG(前端服务组元数据)和IWSV(后端业务服务)两个关键对象的作用机制,强调应通过PFCG角色的Authorization Default入口维护服务对象,而非直接修改S_SERVICE授权对象。文章还提供了前后端授权配置的具体操作步骤,并特别提醒需同时配置前端和后端授权,才能确保应用完整可用性。 阅读详情

相关推荐

python 写一个简单的 telegram bot (电报机器人)

replit.com 环境配置太恶心了,只能使用 poetry.poetry 这个名字是挺好听,用起来也是很垃圾,太恶心。heroku.com 注册登录不方便,需要各种验证。所以,部署的问题,目前搁置。

waterHBO的博客 3196

常见异常以及相关处理方法

常见异常以及相关处理方法: Error Error 是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java 虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。 Error 表明系统 JVM 已经处于不可恢复的崩溃状态中。我们不需要管他。 Err

Wynb1020的博客 408

华为网络实战:5分钟搞定OSPF+VRRP+MSTP多协议联动配置(附完整命令集)

本文深入解析了在企业网络中如何高效协同部署OSPF、VRRP和MSTP三大协议。通过一个典型的双核心网络案例,详细阐述了从规划、配置到验证的完整流程,重点强调了确保MSTP根桥与VRRP主设备一致的设计原则,以实现最优的二层与三层流量转发路径,并提供了完整的命令集和故障排查思路。

weixin_29251337的博客 154

CHAPTER-10 异常

异常 什么是异常? 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序. 程序运行–>异常(程序中断) STOP 在Java中,Java编程语言使用异常处理机制为程序提供了错误的能力 步骤: 1.程序中预先设置好对付异常的处理方法 2.程序运行 3.异常 4.对异常进行处理 5.处理完毕,程序继续运行 try-catch块 情况一:正常状况 使用try-catch块捕获异常 public void method(){ try{ //代码块(此处不会产生

weixin_57307780的博客 174

LQR控制算法调参指南:如何通过Bryson‘s Rule和Trial-and-Error优化自动驾驶性能?

本文深入探讨了LQR控制算法在自动驾驶系统中的调参策略,从Bryson's Rule的基础应用到工程落地的优化方法。通过动态权重适应、非对角项引入和多目标权衡等技巧,提升车辆轨迹跟踪精度与操控舒适性。文章还介绍了数据驱动的调参流程和典型问题的解决方案,为自动驾驶工程师提供实用指南。

kkk56的博客 1024

Quartus ||———基于Verilog HDL的数字秒表设计实验

Quartus ||———基于Verilog HDL的数字秒表设计实验一、实验目的二、实验步骤(一)新建工程(二)添加设计文件(三)综合分析与功能仿真1、综合分析2、功能仿真 一、实验目的 用Verilog HDL设计一个数字跑表,所需引脚和功能如下: 二、实验步骤 (一)新建工程 在创建好工程名称后,选定芯片类型 (二)添加设计文件 新建Verilog文件,键入代码如下 module n_clk_top( input clk, input rese

TBMmagic的博客 5526

使用异常处理机制解决问题

一、关于异常 认识异常: 1)异常是指在程序的运行过程中所发生的的不正常的事件,如所需文件找不到、网络连不通或连接中断、算术运算正常(如被零除)、数组下标越界、装载一个不存在的类、对null对象操作、类型转换异常等。异常会中断正在运行的程序。 2)简单的处理异常,我们可以添加if-else语句对各种异常情况进行判断处理。但是使用这种方式有不可忽视的缺点。 代码臃肿,加入了大量的异常情况判断和处理代码 程序员花费更多时间在异常处理的代码上,影响开发效率 很难穷举所有的异常情况 异常和业务代码交织在一起,影响

weixin_42507474的博客 1130

JMeter压力测试全攻略:从入门到精通

本文系统讲解JMeter压力测试的完整流程与结果评估方法。开篇介绍压力测试的核心概念及JMeter工具特性,随后从环境搭建入手,详细说明JDK配置、JMeter安装及中文界面设置。主体部分围绕测试流程展开,涵盖测试计划创建、线程组参数调优、HTTP请求配置、断言与监听器添加等实操步骤;结果评估环节深入解析聚合报告指标、结果树分析及性能瓶颈定位方法,并通过电商接口测试案例演示全流程应用。文末总结关键要点,为读者提供从基础操作到分布式压测、性能调优的进阶学习方向,助力掌握JMeter在系统性能评估中的核心应用。

邓邓子的博客 2416

exception 和 error的区别

Exception:是程序本身可以处理的异常Error:是程序无法处理的错误,这些错误标识故障发生于虚拟机自身或者发生在虚拟机试图执行应用时,一般不需要程序处理,例如:内存空间不足,栈溢出检查异常(编译器要求必须处置的异常):除了Error,其他的Exception类及其子类都属于可查异常,这种异常的特点是java编译器会检查他,也就是是说,当程序中出现此类异常的时候,要么try-catch捕获,...

hnhygkx的博客 6621

11、硬件工程师笔试面试——IGBT(2025版本)

IGBT的应用展望与创新趋势表明,随着电子技术的不断发展,IGBT在各个领域都有广泛的应用,如高压电力系统、交通工具、电锅炉、太阳能和风能发电系统等。FS型IGBT(场终止型绝缘栅双极晶体管)在电力传输领域的应用中,通过其独特的设计和特性,有助于确保系统的稳定性和安全性。每种器件都有其独特的优势,能够满足电力传输系统中不同的技术要求。FS型IGBT通常具有正温度系数,这意味着随着温度的升高,导通压降的主要影响因素是载流子迁移率的降低以及集电极和发射极的接触电阻的增加,有助于在高温下维持稳定的性能。

XU157303764的博客 2672

FPGA原型验证(七):如何选择、搭建原型验证平台?

本篇概要::讨论了在项目初期选择目标FPGA平台的重要性,包括自制板卡与购买现成板卡之间的决策。主要是为那些希望建立基于FPGA的原型平台的工程师和设计师提供了深入的技术细节和决策指导,无论是选择自制还是购买现成的解决方案。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 943

Python基础4--异常处理(try&except&finally)

目录 1、基本异常处理(try&except) 2、带finally的子句异常处理(try&except&finally) 任何程序都可能会遇到运行出错的现象,异常是不可避免的,但是可以通过异常处理语句得到合理解决。针对程序异常出错问题,Python提供了一套完整的处理机制。 1、基本异常处理(try&except) 基本语法使用: try: 代码模块1 #执行代码模块1,如果正常直接结束,如果异常走except...

刘阿童木的博客 1545

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能。本篇文章主要介绍如何使用xlwings对Excel表格进行多行多列数据设置和操作,并给出相应的源代码。接着,我们可以对这个范围内的所有单元格进行操作,如设置字体颜色、填充颜色、对齐方式等。以上就是使用xlwings对Excel表格进行多行多列数据操作和设置字体颜色、填充色和对齐方式的全部内容。最后,我们可以将数据写入到单元格中,也可以从单元格中读取数据。在Excel中,可以通过。

BUG?不存在的! 713

python中错误和异常处理

错误和异常处理 在python中一共有2种错误:一种是语法错误,另外一种是异常。 语法错误 语法错误也叫做解析错误,是指python无法正确的识别代码的造成的。根本原因在于人的行为:手残,脑残和眼残的行为。 解决方法:按照正确的语法进行书写就没这个错误了! 异常 异常是指在语法正确的前提下,程序的报错就是异常。 它是在程序异常时单独存在的一个对象,可以对其进行获取或其他操作 异常...

秋叶夏风的博客 1224

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PHP错误处理&异常处理

避免过度捕获异常:不要过度捕获异常,这可能导致隐藏潜在的问题或掩盖错误。只捕获你知道如何处理的异常,并将其他未处理的异常传递给更上层的代码进行处理。抛出自定义异常:通过定义自定义异常类,可以更好地组织和标识特定类型的异常。这样可以确保异常被正确捕获,并且避免特定的异常被更一般的异常类型捕获导致无法执行特定的异常处理逻辑。块来处理不同类型的异常。使用合适的异常类型:PHP 中有许多内置的异常类型,如。,而将未知或不可处理的异常传递给更上层的代码进行处理。块进行处理:根据不同的异常类型,使用多个。

代码炼金术 4865

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

bcb异常处理显示错误行号_PHP错误和异常处理

错误处理 1. 语法错误 2. 运行时的错误 3. 逻辑错误 错误报告: 错误 E_ERROR 警告 E_WARNING 注意 E_NOTICE 开发阶段:开发时输出所有的错误报告,有利于我们进行程序调试 运行阶段:不要让程序输出任何一种错误报告(不能让用户看到(懂技术, 不懂技术)) 将错误报告写入日志中 一、指定错误报告 error_reporting = E_LL 二、关闭错误输出 disp...

weixin_40005542的博客 174

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java异常处理错误

Java异常处理错误        发现错误的最佳时期是在编译阶段,也就是在你运行程序之前。然而,编译期间并不能找出所有的错误,余下的问题必须在运行阶段解决。这就需要错误源通过某种方式把适当的信息传给某个接收者,该接收者知道如何处理这个问题。        Java中的异常处理的目的在于通过使用少于目前数量的代码来简化大型,可靠的程序的生成,并且通过这种方式可以使你更加自信:你的应用中没有

奋起的Coder。。。 938

错误和异常处理

python错误和异常处理

橙子味冰可乐的博客 750

PHP错误和异常处理

[TOC] PHP错误和异常处理 PHP的错误和异常是两个概念 PHP的错误处理: 1.语法错误 2.环境错误 3.逻辑错误 PHP的异常类型: PHP7的错误和异常 PHP 7 改变了大多数错误的报告方式。 不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为Error...

chuanguan1820的博客 295

Golang错误和异常处理的正确姿势

序言 错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误。从表面上看,一切皆错误的思路更简单,而异常的引入仅仅增加了额外的复杂度。 但事实并非如此。众所周知,Golang遵循“少即是多”的设计哲学,追求简洁优雅,就是说如果异常价值不大,就不会将异常加入到语言特性中。 错误和异常处理是程序...

延宝小白马的博客 4909

php的错误异常处理

php的错误异常机制 当我们没有自定义错误异常处理函数,php会按照默认的方式处理和显示错误异常。 自定义默认的错误异常处理函数 //注册捕获错误的处理函数 set_error_handler([__CLASS__, 'appError']); //注册捕获错误的处理函数 set_exception_handler([__CLASS__, 'appException']); //程序结束后...

littlexiaoshuishui的博客 543

【Python基础】Python错误和异常处理(详细实例)

​ 在Python编程中,错误和异常处理是保证程序健壮性和稳定性的重要组成部分。Python提供了强大的异常处理机制,使开发者能够优雅地处理程序执行过程中可能出现的各种错误和异常情况。本文将深入探讨Python中的错误类型、异常处理机制以及相关的最佳实践。什么是Python?Python是由荷兰人吉多·范罗苏姆于1990年初设计的一门高级编程语言,该语言应用领域非常广泛,尤其在数据科学、人工智能、游戏开发等领域,它已经成为最受欢迎的程序设计语言之一,非常适合新手学习。

分享是一种境界,勤于分享,乐于分享! 2627

深入浅出:PHP 错误和异常处理

通过函数,你可以设置自定义的错误处理器。这允许你以更灵活的方式处理不同类型的错误。php$errno// 你可以在这里记录错误日志或采取其他措施 } set_error_handler("customErrorHandler");// 触发一个警告错误 echo $undefined_variable;?$errstr// 你可以在这里记录错误日志或采取其他措施 } set_error_handler("customErrorHandler");

软件架构师笔记 1147

Go错误和异常处理

基础知识 错误指的是可能出现问题的地方出现了问题,比如打开一个文件时失败,这种情况在人们的意料之中 ;而异常指的是不应该出现问题的地方出现了问题,比如引用了空指针,这种情况在人们的意料之外。可见,错误是业务过程的一部分,而异常不是 。 Golang中引入error接口类型作为错误处理的标准模式,如果函数要返回错误,则返回值类型列表中肯定包含error。error处理过程类似于C语言中的错误码,...

thinker 1490

十二 通过异常处理错误

十二 通过异常处理错误 异常处理的任务就是将程序从错误的状态拯救出来,换一种方式继续运行程序 发现错误的理想时机当然是编译阶段-------程序运行之前。但是理想很丰满现实很骨感,在编译期间并不能找到所有的错误,可是存在问题总得解决而不是一味地带逃避。所以只有在发生错误的时候将错误源通过某种方式用适当的形式传递给接收者,让其知道如何处理这个问题。 使用异常能够降低错误处理代码的复杂度。如果...

VSelina的博客 323

Python中的错误和异常处理

在 Python 中,错误通常分为两种类型:语法错误(Syntax Error)和运行时错误(Runtime Error)。也称为解析错误,是由于代码不符合 Python 语法规则而引起的错误,在程序运行之前就会被检测到,并提示错误的位置和原因。# 语法错误示例也称为异常(Exception),是在程序运行过程中由于特定条件引发的错误,导致程序无法继续执行。# 运行时错误示例x = 10 / 0在处理异常时,有时候需要将异常链传递下去,以便更好地理解异常的来源和上下文。

weixin_55100524的博客 1331
上一篇: Comparable 和Comparator
下一篇: mysql基础知识
技术搬运工
博客等级 码龄11年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值