【大数据基础】Java异常处理常见方式有什么

2020-11-29 21:01发布

10条回答
是你的小甜心呀
2楼 · 2020-11-29 21:09

1、不要丢弃异常,捕获异常后需要进行相关处理。如果用户觉得不能很好地处理该异常,就让它继续传播,传到别的地方去处理,或者把一个低级的异常转换成应用级的异常,重新抛出

2、catch语句应该指定具体的异常类型。不能把不该捕获的异常也捕获了

3、在finally里面释放资源。如果finally里面也会抛出异常,也一样需要使用try..catch处理

4、不要把大量的代码塞在try...catch块里面,分离各个可能出现异常的语句并分别捕获异常

5、由于异常可能导致输出的数据不完整,因此用户需要作出相对应的处理,至少应该提示该数据的不完整

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家.


天天
3楼 · 2020-11-29 21:09
  • try-catch关键字可以捕获异常,其中try块中执行可能出现异常的代码,catch块包含要捕获异常类型的说明,当一个try后面跟随多个catch时的情况就叫多重捕获
  • throw/throws关键字用于抛出异常,其中throw关键字在代码段中使用,throws关键字放在方法签名的尾部,用于声明当前方法可能出现的异常,从而向上传递,在调用位置处理
  • finally关键字用于创建在try-catch代码块后面执行的代码块,无论是否发生异常,finally块中的代码都会被执行,通常运行清理类型收尾善后性质的语句


听雨
4楼 · 2020-11-30 09:04

1)try...catch...分为单catch与多catch处理方式,其本质执行方法基本相同

2)try...catch...finally

3)自动关闭资源的try语句

4)嵌套的try...catch语句

5)多异常捕获


爱梦 - 拿来吧你
5楼 · 2020-11-30 10:34

Java中定义两种类型的异常和错误:

1. JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。

2. 程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。


茄子酱
6楼 · 2020-11-30 10:37

Java中定义两种类型的异常和错误:

1. JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。

2. 程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。

捕获异常的方法

使用 try 和 catch 关键字可以捕获异常,try/catch代码块中的代码称为保护代码,可以放在异常可能发生的地方,具体用法如下:

try

{

   // 程序代码

}catch(ExceptionName e1)

{

   //Catch 块

}

catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。也可以进行多重捕获,具体用法是在try代码块后面跟随多个catch代码块。

catch 语句往往是和finally配合使用,finally关键字用来创建在try代码块后面执行的代码块,无论是否发生异常,finally代码块中的代码总会被执行,因此,在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

声明自定义异常

在Java中可以自定义异常,在自定义异常类时需注意以下几点:

1. 所有异常都必须是 Throwable 的子类;

2. 自定义检查性异常类,则需继承 Exception 类;

3. 自定义运行时异常类,则需继承 RuntimeException 类。

自定义的异常类和其他任何类都一样,包含有变量和方法。其作用机制均是抛出异常和捕捉异常,一个方法能捕捉异常,一定是Java代码在某处所抛出的异常,异常总是先被抛出,后被捕捉的。

cc收获啦
7楼 · 2020-11-30 11:09

NO.1 java.lang.NullPointerException

  这个异常大家肯定都经常遇到,异常的解释是 “程序遇上了空指针 “,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在

创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋

友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,

依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)。
  在jsp编程中经常出现:if (request.getParameter(“username”).equals(“xxx”))、out.println(session.getAttribute(“record”))等。解决这

个问题的方法是在使用前进行判空比较:

   if (request.getParameter(“username”)!=null)
  {if if (request.getParameter(“username”).

  equals(“xxx”))…}

NO.2 java.lang.ClassNotFoundException

  这个异常是很多原本在JB等开发环境中开发的程序员,把JB下的程序包放在WTk下编译经常出现的问题,异常的解释是 “指定的类不存在 “,这里主要考

虑一下类的名称和路径是否正确即可,如果是在JB下做的程序包,一般都是默认加上Package的,所以转到WTK下后要注意把Package的路径加上。

NO.3 java.lang.ArithmeticException

  这个异常的解释是 “数学运算异常 “,比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数

学运算的地方,公式是不是有不妥了。

NO.4 java.lang.ArrayIndexOutOfBoundsException

  这个异常相信很多朋友也经常遇到过,异常的解释是 “数组下标越界 “,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看

自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错

了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常

NO.5 java.lang.IllegalArgumentException
  这个异常的解释是 “方法的参数错误 “,很多J2ME的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会

出现这个异常,再比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异

常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。 NO.6 java.lang.IllegalAccessException

  这个异常的解释是 “没有访问权限 “,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情

况下要注意这个异常。

NO.7 java.lang.IncompatibleClassChangeError
不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重

新编译而直接运行的情况下,容易引发该错误。
NO.8 java.lang.InstantiationError

实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.

NO.9 java.lang.LinkageError

链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况


NO.10 java.lang.StackOverflowError
堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。

 

  其他还有很多异常,在此我就不一一列举了,但要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。真正能说明你Coding水平的标准中,对异常的认识就是其中非常重要的一条。关于异常的全部说明,在api里都可以查阅。大家也不用把其中的所有内容都背在脑中,只要做到对常见异常有一些印像,在真正遇到时知道去哪找就差不多了,毕竟Java程序员最最痛苦就是它的知识容量太大,而我们每天都会遇到新的错误与新的问题及新的知识,所以把握一条属于自己的排队异常的本领才是最重要的。


try-catch关键字可以捕获异常,其中try块中执行可能出现异常的代码,catch块包含要捕获异常类型的说明,当一个try后面跟随多个catch时的情况就叫多重捕获

throw/throws关键字用于抛出异常,其中throw关键字在代码段中使用,throws关键字放在方法签名的尾部,用于声明当前方法可能出现的异常,从而向上传递,在调用位置处理

finally关键字用于创建在try-catch代码块后面执行的代码块,无论是否发生异常,finally块中的代码都会被执行,通常运行清理类型收尾善后性质的语句


1234
9楼 · 2020-11-30 15:27

Error 是指 Java 运行时系统内部的错误,或者说它代表了 JVM 本身的错误,通常都是比较严重的错误, 比如内存溢出, 虚拟机错误等等;

Error 通常和硬件或 JVM 有关,和程序本身无关,所以不能被代码捕获和处理。

我们经常说的异常是指 Exception,又可以分成运行时异常和检查异常。

RuntimeException:运行时异常,这类异常在编译期间不强制代码捕捉,但是可能在在 JVM 运行期间抛出异常;出现此类异常,通常是代码的问题,所以需要修改程序避免这类异常。常见的运行时异常,比如:NullPointerException、ClassCastException 等等。

CheckedException:检查异常,这种异常发生在编译阶段,Java 编译器会强制代码去捕获和处理此类异常;比如:ClassNotFoundException、IllegalAccessException 等等。


相关问题推荐

  • 什么是大数据时代?2021-01-13 21:23
    回答 100

    大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,而这个海量数据的时代则被称为大数据时代。随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。大数据(Big data)通常用来形容一个公司创造的大量非结...

  • 回答 84

    Java和大数据的关系:Java是计算机的一门编程语言;可以用来做很多工作,大数据开发属于其中一种;大数据属于互联网方向,就像现在建立在大数据基础上的AI方向一样,他两不是一个同类,但是属于包含和被包含的关系;Java可以用来做大数据工作,大数据开发或者...

  • 回答 52
    已采纳

    学完大数据可以从事很多工作,比如说:hadoop 研发工程师、大数据研发工程师、大数据分析工程师、数据库工程师、hadoop运维工程师、大数据运维工程师、java大数据工程师、spark工程师等等都是我们可以从事的工作岗位!不同的岗位,所具备的技术知识也是不一样...

  • 回答 29

    简言之,大数据是指大数据集,这些数据集经过计算分析可以用于揭示某个方面相关的模式和趋势。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。大数据的特点:数据量大、数据种类多、 要求实时性强、数据所蕴藏的...

  • 回答 14

    tail -f的时候,发现一个奇怪的现象,首先 我在一个窗口中 tail -f test.txt 然后在另一个窗口中用vim编辑这个文件,增加了几行字符,并保存,这个时候发现第一个窗口中并没有变化,没有将最新的内容显示出来。tail -F,重复上面的实验过程, 发现这次有变化了...

  • 回答 18

    您好针对您的问题,做出以下回答,希望有所帮助!1、大数据行业还是有非常大的人才需求的,对于就业也有不同的岗位可选,比如大数据工程师,大数据运维,大数据架构师,大数据分析师等等,就业难就难在能否找到适合的工作,能否与你的能力和就业预期匹配。2、...

  • 回答 17

    最小的基本单位是Byte应该没多少人不知道吧,下面先按顺序给出所有单位:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB,按照进率1024(2的十次方)计算:1Byte = 8 Bit1 KB = 1,024 Bytes 1 MB = 1,024 KB = 1,048,576 Bytes 1 GB = 1,024 MB = 1,048,576...

  • 回答 33

    大数据的定义。大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据是对大量、动态、能持续的数据,通过运用新系统、新工具、新...

  • 回答 5

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的版本:针对不同的用户,MySQL分为两种不同的版本:MySQL Community Server社区版本,免费,但是Mysql不提供...

  • mysql安装步骤mysql 2022-05-07 18:01
    回答 2

    mysql安装需要先使用yum安装mysql数据库的软件包 ;然后启动数据库服务并运行mysql_secure_installation去除安全隐患,最后登录数据库,便可完成安装

  • 回答 5

    1.查看所有数据库showdatabases;2.查看当前使用的数据库selectdatabase();3.查看数据库使用端口showvariableslike'port';4.查看数据库编码showvariableslike‘%char%’;character_set_client 为客户端编码方式; character_set_connection 为建立连接...

  • 回答 5

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(    `runoob_id` INT UNSIGNED AUTO_INCREMENT,    `runoob_title` VARCHAR(100) NOT NULL,    `runoob_author` VARCHAR(40) NOT NULL,    `submission_date` DATE,    PRI...

  • 回答 9

    学习多久,我觉得看你基础情况。1、如果原来什么语言也没有学过,也没有基础,那我觉得最基础的要先选择一种语言来学习,是VB,C..,pascal,看个人的喜好,一般情况下,选择C语言来学习。2、如果是有过语言的学习,我看应该一个星期差不多,因为语言的理念互通...

  • 回答 7

    添加语句 INSERT插入语句:INSERT INTO 表名 VALUES (‘xx’,‘xx’)不指定插入的列INSERT INTO table_name VALUES (值1, 值2,…)指定插入的列INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)查询插入语句: INSERT INTO 插入表 SELECT * FROM 查...

  • 回答 5

    看你什么岗位吧。如果是后端,只会CRUD。应该是可以找到实习的,不过公司应该不会太好。如果是数据库开发岗位,那这应该是不会找到的。

  • 回答 7

    查找数据列 SELECT column1, column2, … FROM table_name; SELECT column_name(s) FROM table_name 

没有解决我的问题,去提问