Response.End抛出ThreadAbortException 异常
最近在写程序过程中遇到了一个匪夷所思的错误:Response.End()方法抛出了ThreadAbortException异常,我的代码如下:
public void doResponse(){
string username=Request.Params["username"];
string password=Request.Params["password"];
try{
var result=bo.doValidateUserInfo(username,password);
string msg=string.Empty;
if(result==UserLoginStatus.Error){
msg="用户登录失败";
}else if(result== UserLoginStatus.Success){
msg="用户登录成功";
}else if(...){
...
}
Response.Writer(msg);
Response.End();
}catch(Excetpion ex){
// log the error
}
}
比较郁闷的就是上边的这样的代码,在Response.End()地方就会出现ThreadAbortException错误。
- 问题原因:
ThreadAbortException能屏蔽还是屏蔽,因为ThreadAbortException是一个很匪夷所思的异常:在.net中它如果不捕获,就不会抛出异常;只是简单的终止当前线程,而其他线程继续运行不受影响。
不过这样解释比较牵强吧,但事实就是这样子,也更找不到其他更好的答案来解释。
修改程序为:
public void doResponse(){
string username=Request.Params["username"];
string password=Request.Params["password"];
try{
var result=bo.doValidateUserInfo(username,password);
string msg=string.Empty;
if(result==UserLoginStatus.Error){
msg="用户登录失败";
}else if(result== UserLoginStatus.Success){
msg="用户登录成功";
}else if(...){
...
}
Response.Writer(msg);
}catch(Excetpion ex){
// log the error
}finally{
Response.End();
}
}
不管如何吧,希望大家能解决自己的问题。
Response.End抛出ThreadAbortException 异常的更多相关文章
- springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...
- 将Controller抛出的异常转到特定View
<!-- 将Controller抛出的异常转到特定View --> <bean class="org.springframework.web.servlet.handler ...
- 使用visual studio 2015调用阿里云oss .net sdk 2.2的putobject接口抛出outofmemory异常
问题描述: 使用阿里云oss .net sdk 2.2版本,使用putobject接口上传文件时,抛出outofmemory异常. 原因分析: 上传时,用于准备上传的数据缓冲区内存分配失败.与应用软件 ...
- 捕获Java线程池执行任务抛出的异常
捕获Java线程池执行任务抛出的异常Java中线程执行的任务接口java.lang.Runnable 要求不抛出Checked异常, public interface Runnable { publi ...
- 为什么只有在用Visual Studio启动程序时会抛出InvalidOperationException异常
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:为什么只有在用Visual Studio启动程序时会抛出InvalidOperationExceptio ...
- java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误
/** * Return whether the given throwable is a checked exception: * that is, neither a RuntimeExcepti ...
- druid抛出的异常------javax.management.InstanceAlreadyExistsException引发的一系列探索
最近项目中有个定时任务的需求,定时检查mysql数据与etcd数据的一致性,具体实现细节就不说了,今天要说的就是实现过程中遇到了druid抛出的异常,以及解决的过程 异常 异常详细信息 五月 05, ...
- 外部无法捕捉Realm的doGetAuthenticationInfo方法抛出的异常
shiro权限框架,用户登录方法的subject.login(token)会进入自定义的UserNamePasswordRealm类的doGetAuthenticationInfo身份验证方法 通常情 ...
- JavaWeb项目中获取对Oracle操作时抛出的异常错误码
最近在项目中碰到了这么一个需求,一个JavaWeb项目,数据库用的是Oracle.业务上有一个对一张表的操作功能,当时设置了两个字段联合的唯一约束.由于前断没有对重复字段的校验,需要在插入时如果碰到唯 ...
随机推荐
- WebForm增删改查
最基本的,拼接字符串在Literal里面显示表,IsPostBack,增删改查基本,?传值 Request接收 LinQ to SQL类 在Default主页里面拖入Literal控件再加入一个按钮, ...
- 破解压缩文件密码rarcrack
破解压缩文件密码rarcrack 常见的压缩文件格式有ZIP.RAR和7z.这三种格式都支持使用密码进行加密压缩.前面讲过破解ZIP压缩文件,可以使用fcrackzip.对于RAR和7z格式,可以 ...
- dbflow 批量 增删查改
@ModelContainer @Table(database = DemoDatabase.class) class Person extends BaseModel implements Seri ...
- php递归获取顶级父类id
php递归获取顶级父类id function get_top_parentid($id){ $r = M('navclass')->where('id = '.$id)->field('i ...
- log4j日志文件 log4j.xml log4j.properties配置
1,导入log4j jar包; 2,配置log4j.xml或log4j.properties文件; ------------------------------------------------- ...
- javascript面向对象(三):非构造函数的继承
本文来自阮一峰 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使用构造函数实现"继承" ...
- [Android]新版的sdk中新建一个android应用,增加的PlaceholderFragment这个静态类发生的事情
1,首先发生的是有两个布局xml,一个activity_main.xml,一个是fragment_main.xml一开始没在意,后来仔细看了原来是新功能的fragment概念等于多个场景在这个acti ...
- 11.static关键字
1.用static修饰的方法,直接用类调用 2.static修饰的方法只能调用static方法,不能调用非 static属性和方法 ①因为static属性和方法在类没有实例化的时候调用 ②因为普通属 ...
- mysql临时禁用触发器
mysql支持设定session变量,并且有带入到触发器中使用的能力,故可以间接的设置触发器失效 思路是: 在执行前设定一个session变量,执行过程中判断该变量的值(没有设定该变量的值时该变量默认 ...
- C++ 在Windows下截取整个屏幕 和 指定句柄窗口的屏幕
#include <windows.h> #include <stdint.h> #include <stdio.h> void ShootScreen(const ...