java异常信息如何返回给Servlet

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java异常信息如何返回给Servlet相关的知识,希望对你有一定的参考价值。

我现在后台虽然能够判断错误,但是毕竟要将这个错误返回到Servlet。请问,Servlet如何接受调用的函数抛出的异常??或者说Servlet调用的函数要怎么返回这个异常??

通过throw语句可以将异常抛出到外层。

异常一般分两类:check 和 uncheck。他们的主要区别是抛出uncheck异常时,无需在方法名称上声明异常的类型。

在实际业务中,如果把所有异常统一在servlet中处理,可以这样做:

// 定义一个uncheck异常
public class AppException extends RuntimeException...

// 在业务代码中抛出AppException 
public class MyLogic
    public void someLogic()
        throw new AppException();
    


// 在servlet的doGet、doPost等方法里catch并处理
...........
try
   ......
catch(AppException ex)// 业务异常,需要进行一些业务处理,比如跳转等
    ex.printStackTrance();
catch(Throwable ex)   // 未受控异常,可能是代码问题,需要检视代码
    ex.printStackTrance();

...........

参考技术A 你好,这个问题可以这么解决:
1.首先在你要调用的函数抛出异常。(函数后throws exception)
2.在你的servlet中调用该函数的时候,捕获异常(函数嵌套在try catch中)。
try
调用的函数

catch()
request.setParamter("info","异常信息");


3.在你前台页面输出异常。 <%== request.getParamter("info")%>

希望可以帮到你!
参考技术B 1.调用的方法会抛出异常
2.在servlet里调用1中的方法时,加上try catch
3.将异常信息放置到request中
4.在jsp页面就可以读取request中的异常信息
参考技术C 比如说有个servelt叫:LoginServelt,对应的后台是UserService,方法是loginValidate();,有个异常类叫LoginException,于是是这样的:
LoginServelt
doGet()
try
userSerivce.loginValidate();
catch (LoginException e)
System.out.println("发生登陆异常"+e.printStackTrace(););






class UserService
public void loginValidate(String username, String password) throws LoginException
if (用户名或密码不正确)
throw new LoginException("用户名或密码不正确");




异常处理

异常处理的概念和java异常处理的体系结构

在面向编程语言中,我们可以通过返回值来确定方法是否正常执行。比如在一个c语言编写的程序中,如果方法正确执行则返回1,错误则返回0.在VB或Delphi开发的应用程序中,出现错误时,我们就弹出一个消息框给客户。通过返回值我们并不能获得错误的详细信息。可能因为方法由不同的程序员编写,当同一类错误在不同方法中出现时,返回的结果和错误信息并不一样,所以java语言采取统一的异常处理机制。(异常:运行时发生的可捕获和处理的错误)

在java语言中,任何异常处理的对象都是java.lang.Throwable类或其子类对象。Throwable类是java异常系统体系中的根类,他有两个子类:一个是Error类另一个是Expection类。Error类代表程序运行过程中java内部错误,一旦发生了这种错误,程序员除了告知用户发生的错误并关闭程序的运行之外,没有其他方法,程序员没有办法处理Error类。像“out of memory”就是虚拟机空间不够时会报的错误。Expection是所有异常的父类,任何异常都扩展于Expection类,Expection类相当于一个错误类型。Expection类相当于一个错误类型。Expection类是我们真正关心并尽可能加以处理的。如果要定义一个新的Expection子类。采用异常的好处还在于可以精确的定位到导致程序出错源代码的位置,并获得详细的错误信息。

Expection类分为运行时异常(Runtime  Expection)和非运行时异常。运行时异常就是Runtime  Expection及其子类的异常,像常用的空指针NullPointerExpection,数组溢出IndexOutOfBoundsExpectiont等。非运行时异常是指Runtime  Expection以外的异常,如IOE Expection,SQLExpection等。

常用异常介绍如下:

java.lang.NullPoiterExpection:这个异常大家都肯定经常遇到,异常的解释是“程序上遇到了空指针”简单的说就是调用了未经初始化或者不存在的对象。这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的读者常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了,数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化。

java.lang.ClassNotFoundExpection:这个解释的是“指定的类不存在”。这里主要考虑一下类的名称和路径是否正确即可。

java.lang.ArithmeticExpection:这个异常的解释是“数学运算异常”比如程序中出现了除以零这样的运算就会出现异常。对于这种异常,我们就要好好检查一下自己的程序中涉及数学运算的地方。公式是不是有不妥了。

java.lang.ArrayIndexOutBoundsExpection:这个异常的解释是“数组下标越界”。现在程序中大多数有对数组的操作,因此在调用数组的时候一定要认真检查,看一下自己调用的下标是不是超出数组的范围。一般来说,显式(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了。还有一种情况,程序中定义的数组的长度是通过某些特征方法决定的,不是事先生命的。这个时候最好检查一下数组的length,以免出现这种异常。

java.IllegalArgumentExpection:这个异常的解释是“方法的参数错误”很多J2SE的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写负数就会出现这种异常;再比如:g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255就会出现这个异常。因此一旦出现这个异常,我们应该首先检查一下方法调用的参数传递是不是出现了错误。

java.IllegalAccessExpection:这个异常的解释是“没有访问权限“。当程序要调用一个类,但当前的方法没有对该类的访问权限就会出现这个异常,对程序中使用lepackage的情况下要注意这个异常。

java.lang.ArrayStoreExpection:试图把与数组类型不相符的值存入数组。

java.lang.ClassCastExpection:试图把一个对象强制转换为不适合的类型。

java.lang.IndexOutOfBoundsExpection:下标越界。

java.util.EmptyStackExpection:试图访问一个空堆栈中的元素。

java.util.NoSuchElementExpection:试图访问一个空间量中的元素。

java.lang.InstantiationExpection:试图使用class的newInstance()方法创建一个对象实例,但指定的对象没有被实例化,因为它是一个接口,抽象类,或数组。

java.lang.InterruptedExpection:当前的线程正在等待,而另一个线程使用了Thread的interrupt()方法中断了当前线程。

java.io.Expection:申请I/O操作没有正常完成。

java.io.EOFExpection:在输入操作正常结束前遇到文件结束符。

java.io.FileNotFoundExpection:在文件系统中没有找到由文件名字符串指定的文件。

 

以上是关于java异常信息如何返回给Servlet的主要内容,如果未能解决你的问题,请参考以下文章

java中如何获取 控制台的输出信息,错误信息,和异常信息。

Java自定义异常信息

java servlet中的空指针异常[关闭]

一个404异常信息的解决方案

网关代理转发异常

Java:如何获取错误信息?