Java中的异常机制及其解决

一.Java中的异常机制继承体系图如下:

二.JAVA异常可分为3种:

  (1)编译时异常:java.lang.Exception

  (2)运行期异常:java.lang.RuntimeException

(3)错误:java.lang.Error

ava.lang.Exception和java.lang.Error继承自java.lang.Throwable;

java.lang.RuntimeException继承自java.lang.Exception.

 

编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。JAVA编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。

 

运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,JAVA编译器强制要求处理这类异常。

 

错误: 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。

三.三个典型的编译时异常(强制检测异常):①在进行文件操作时,比如创建数据流对象

java.io.InFileInputStream  ins=new java.io.InFileInputStream();这样肯定会报错。②在使用线程的休眠时,如:Thread.sleep(300);这样也会报错。③

三个典型的运行时异常(非强制检测异常):①空指针异常。②数组或队列越界。③类型转换异常。

二个典型错误:①虚拟机的错误VirtualMachineError ②内存不足OutOfMemoryError

Java中用2种方法处理异常:

    1.在发生异常的地方直接处理;

    2.将异常抛给调用者,让调用者处理。

强制检测异常使用try-catch语句块来处理,而非强制异常只能靠程序员的细心才能解决啦,错误也一样,在编写程序的时候,要注意逻辑,这样才能尽量避免这些异常或错误。

四.Exception,throw,throws,Throwable的区别:

Throwable 是Exception的父类,而throw和throws是在处理异常时使用的一个关键字,如:public void solveException() throws Exception{

       throw new Exception("出错啦!!!!!!!!!");

   }

   可以看出,throws是放在方法声明时用的,而throw是在方法体里面用来抛出异常时使用的。


 

【文末送书】【Java中的异常处理机制】提供常见的异常报错详情及其解决方案 本文介绍了Java异常的基本概念,包括已检查异常和运行时异常。同时,提供了一些常见异常报错的详情和解决方案。在进行Java编程时,应该熟悉常见异常,并编写健壮的代码来处理异常情况,从而保证程序的正确执行。希望本文能帮助理解Java异常并解决在编程过程中遇到的异常报错!学习教程(传送门)1、掌握JAVA入门到进阶知识(持续写作中……2、学会Oracle数据库用法(创作中……3、手把手教你vbs脚本制作(完善中……4、牛逼哄哄的IDEA编程利器(编写中……5、吐血整理的面试技巧( 阅读详情

相关推荐

告别Keil?在Mac上配置STM32CubeIDE + CMSIS-DAP调试器全攻略(含常见报错解决)

本文详细介绍了在Mac平台上配置STM32CubeIDE与CMSIS-DAP调试器的全流程,包括硬件准备、软件安装、工程创建及调试优化。通过实战指南,帮助开发者高效完成STM32开发,解决常见报错问题,提升开发效率。

weixin_30485379的博客 434

已解决java.lang.RuntimeException: 运行时异常的正确解决方法,亲测有效!!!

已解决java.lang.RuntimeException: 运行时异常的正确解决方法,亲测有效!!!

小明的Java问道之路 1万+

ArcGIS渔网分割实战:用Create Fishnet快速生成1km×1km网格(附GDP数据分析案例)

本文详细解析了ArcGIS中Create Fishnet工具在渔网分割中的应用,从基础操作到GDP空间分析全流程。通过1km×1km网格的创建与优化,实现经济数据的空间标准化和可视化表达,解决数据融合与分析的三大核心痛点。

weixin_29250403的博客 298

mockito when void throw exception

1、执行一个void的方法进行mock并抛异常: doThrow(new Exception()).when(mockedObject).methodReturningVoid(...);eg: doNothing().when(validateSaveOrUpdate).validatePartiallyUpdate(anyObject());         verify(validateSa...

u012874209的博客 4302

51单片机定时器的原理、应用与编程实现

本文系统介绍了51单片机定时器的基本原理与应用。首先阐述了定时器的工作原理,包括定时模式和计数模式的区别。然后详细讲解了定时器的四种工作模式(方式0-方式3)及其适用场景,并分析了相关寄存器(TMOD、TCON、THx/TLx)的功能设置。文章还给出了定时器编程的具体步骤,包括初始化、计数初值计算和示例代码。最后通过LED闪烁、PWM波形产生、脉冲计数等实际应用案例,展示了定时器的多样化应用。掌握这些知识对嵌入式系统开发具有重要意义。

2501_91227323的博客 1524

从静态到动态:如何用Deformable 3DGS和4DGS实现高效动态场景建模

本文深入探讨了Deformable 3DGS和4DGS在动态场景建模中的技术突破,详细解析了这两种方法如何高效处理动态内容。Deformable 3DGS通过引入时间维度的变形场扩展传统3DGS,而4DGS则采用四维时空体素分解方法,两者均显著提升了动态场景建模的效率和质量,适用于虚拟现实、增强现实等应用场景。

weixin_29063035的博客 435

Java throws和throw:声明和抛出异常

Java 中的异常处理除了捕获异常和处理异常之外,还包括声明异常和拋出异常。实现声明和抛出异常的关键字非常相似,它们是 throws 和 throw。可以通过 throws 关键字在方法上声明该方法要拋出的异常,然后在方法内部通过 throw 拋出异常对象。

Itmastergo的博客 3241

全桥 LLC 谐振变换器详细解析:结构 + 控制 + 工作原理全搞懂!

在现代高效率电源系统中,LLC 谐振变换器🔥早已成为降损利器。尤其是全桥 LLC 拓扑结构,由于其在、副边整流管的 ZCS(零电流关断),再加上优秀的效率表现,已经成为服务器电源、电动汽车 OBC、光伏逆变等场景的首选。那么,全桥 LLC 到底长啥样?它的控制方式是怎么回事?具体工作波形又是如何呢?今天我们就来一篇讲清楚、讲透彻的文章!🚗💨。

weixin_43199439的博客 3531

java runtime 异常_java中的java.lang.RuntimeException异常怎么解决?

展开全部解决方式如下:1、通配符{1}修改为{0}。2、form提交地址62616964757a686964616fe59b9ee7ad9431333365633865修改下:注册Form地址:登录Form地址:Java语音特征:Java编程语言的风格十分接近C语言、C++语言。Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指...

weixin_29439509的博客 2万+

高斯过程的数学理解

G澳大利亚的过程是有益的,特别是当我们有少量数据时。当我在制造业担任数据科学家时,我们的团队使用这种算法来揭示我们接下来应该进行哪些实验条件。但是,此算法不如其他算法流行。在这篇博客中,我将通过可视化和 Python 实现来解释高斯过程 [1] 的数学背景。

gongdiwudu的专栏 3611

YOLO26 改进 | (教师:YOLOv8L,学生:YOLO26) | 知识蒸馏 (Knowledge Distillation)

本文介绍了基于YOLO26框架的知识蒸馏实战方法,通过教师模型指导学生模型训练,在不增加推理成本的情况下提升模型精度。文章详细阐述了基于响应的知识蒸馏实现方案,通过最小化教师与学生模型预测Logits间的KL散度实现知识迁移。核心实现包括:1) 创建DistillationModel包装器类,同时运行师生模型;2) 自定义DistillationLoss,在原检测损失基础上增加KL散度损失。该方法适用于希望保持YOLO26轻量级特性同时获得接近大模型精度的场景,文中提供了完整的代码实现方案。

weixin_51988935的博客 510

java 异常补偿解决_Java 异常机制

异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。1 ErrorError(错误)表示系统级的错误和程序不必处理的异常,是J...

weixin_34449682的博客 586

【史上最全面esp32教程】oled显示篇

esp32-arduino Oled屏幕的使用

m0_62599305的博客 1万+

Java中有什么异常机制? 有哪些异常分类? 常见异常的详解以及解决异常思路?

Java中的异常分为两类:Checked Exception(已检查异常)和Unchecked Exception(未检查异常)。在处理异常时,我们需要根据具体的业务场景和需求来选择适当的处理方式。解决思路:避免除数为零或者取模的模数为零,或者对于可能存在此类异常的情况进行特殊处理。解决思路:避免使用错误类型的对象进行类型转换,或者在转换之前进行类型判断。解决思路:避免使用null引用,或者在使用之前进行非空校验。解决思路:检查数组下标是否越界,或者动态调整数组的长度。

qwert 999

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VB摄像头监控

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

java异常解决机制:Exception

java中异常报错如图:main:表示main方法线程;java.util.InputMismatchException:表示打印当前异常类型;下面为可能出错行数,有些还有原因:by:***java中提供了异常解决机制,帮助处理异常情况:    异常解决办法:        第一种:try catch(try catch finally)        异常解决结构:try{     //可能出现...

老猫笔记 1891

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java 解决故意弄得错误_手把手教你学习Java异常机制和如何一步步排除解决bug

手把手教你学习Java异常机制和如何一步步排除解决bug手把手教你学习Java异常机制和如何一步步排除,解决bug!原创声明:近期发现在关键字搜索我的文章时,发现很多文章被其他网站直接一字不落的拿去。在这里我先谢谢大家对我写的内容的肯定,我也会继续努力。但是,很多网站连标明都未标明来源,这就让人很可气,毕竟每一篇文章都是我一个字一个字敲出来的。我也不是在抱怨什么,只是希望那些某些站长在“转载”他人...

weixin_39827034的博客 544

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 异常机制

在程序中,可能会遇到JDK提供的任何标准异常类都无法充分描述清楚我们想要表达的问题,这种情况下可以创建自己的异常类,即自定义异常类。自定义异常类只需从Exception类或者它的子类派生一个子类即可。自定义异常类如果继承Exception类,则为CheckedException异常,必须对其进行处理;如果不想处理,可以让自定义异常类继承运行时异常RuntimeException类。习惯上,自定义异常类应该包含2个构造器:一个是默认的构造器,另一个是带有详细信息的构造器。【示例】自定义异常类。

m0_68880377的博客 698

Java异常机制

4、想要捕获多个异常可以在直接罗列即可,要把最大的异常写到最后面,要不然执行第一个捕获异常就停止了(当我们把范围大的异常写到上面的时候,系统会报错,报错的内容是上面的错误异常范围大,已经包含了小的异常)在Java的世界中,我们本身就存在一个一个异常的类,产生异常的无非就是创建一个异常的对象并且将它抛出,一些前辈们已经为我们罗列了成百上千的异常情况。在类中加这么一个属性,就像但与我们在对这个类修改的时候,当我们再次进行序列化或者反序列化时,程序不会认定这是一个新的类而是把它当作这个类的版本升级。

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 143

关于Java中异常的处理【干货篇】

Java中异常的处理【干货篇】

m0_70115494的博客 800

深入分析 Java 中的 NoSuchMethodException 异常及解决方法

访问级别限制:如果尝试访问的方法是私有的或包私有的,默认的反射调用 getMethod 只能访问 public 方法,这也可能导致该异常。方法重载:如果一个类中有多个重载的方法,确保你传递了正确的参数类型,以便能够找到匹配的方法。检查方法签名和重载问题:确保调用的参数类型和方法签名完全匹配,并考虑方法的重载情况。方法签名不匹配:方法存在,但是你传递给反射的参数类型与方法定义的参数类型不一致。内部类方法访问:如果是内部类中的方法,确保你使用正确的外部类/内部类的引用。

A1551143530的博客 3956

解决 Java 中的 InstantiationException 异常

通过确保类是可实例化的、添加无参构造函数,并确保构造函数的访问权限是合适的,通常可以解决大部分问题。没有无参构造函数:newInstance() 方法只能调用类的无参构造函数来创建实例,如果类没有无参构造函数,就会抛出异常。无参构造函数不可访问:即使存在无参构造函数,如果它是私有的,也无法通过 newInstance() 进行实例化。无参构造函数不可访问:如果类的无参构造函数是私有的,newInstance() 无法访问它,从而导致异常。确保类有无参构造函数:如果类没有无参构造函数,需要添加一个。

A1551143530的博客 1627

Java异常机制,自定义异常以及spring boot异常设计方案

异常机制: 异常概念 异常分类 异常的处理方法 自定义异常 springboot 的异常解决方案

qq_42390636的博客 125

Java异常机制-从底层原理到使用实践

导读 本文是笔者在经过学习及工作实践后的一个关于Java异常机制的阶段性总结,同时分享出来,也希望能够帮助到其他正在学习Java异常的读者。受限于本人知识的浅薄,文中难免会有错误或解释不到位的地方,希望能够和读者于评论区中进行友善的交流与评论。 ​ 在内容上,本文仅会简单介绍异常机制的简单概念以及相关理念,会着重于介绍Java异常的底层实现,并试图通过示例代码帮助辅助读者理解,同时会在文章后半部分列举一些关于异常的使用实践和注意事项。 关于异常 ​ 显然的是,没有人能够保证自己写的程序完全没有bug。因

zzz_zjz的博客 2925

Java多线程中的常见异常分析与解决方案

总结经验教训,建议团队加强代码审查,使用相关工具提升开发效率。推荐学习资料:Java并发编程实战、Effective Java等。

weixin_43228360的博客 195

Java 异常处理机制(全)

Java异常处理与异常体系结构

qq_48010634的博客 7325
上一篇: Java窗体中如何改变鼠标光标的形状
下一篇: 赫夫曼算法是啥玩意啊??
Champion_netjava
博客等级 码龄16年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值