问一个异常处理的问题

cnlamar 2003-12-12 12:21:43
先声明,只给第一个回答正确的朋友加分,遵守csdn规则。。。

我想做一个void类型无返回的方法,检测一个数据,当出现错误时出现异常,请问如何将此异常传递回调用该方法进行数据参数的方法中去?并且得到详细的异常信息?

附小问题一个(单独的10分):
一个方法的参数,类型为object,我直接传入一个参数,进入参数的数据的类型可能是int或者是string或者是其他的,进入后自然成为object了,但我如何还原为以前的数据类型呢?
...全文
69 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnlamar 2003-12-13
  • 打赏
  • 举报
回复
thanks
cnlamar 2003-12-13
  • 打赏
  • 举报
回复
其实此帖已经可以结帖了,问题都解决了~~
但再继续问问看是否可以?算小弟贪心吧,想多学一点:D
请问自定义错误处理类一般怎么写?大概的意义是什么呢?
brightheroes 2003-12-13
  • 打赏
  • 举报
回复
下面这个链接好像更合适一点
http://www.fawcette.com/china/XmlFile.aspx?ID=161&page=3
一定去看看
brightheroes 2003-12-13
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/Read_Article.asp?Id=17590
http://www.csdn.net/Develop/Read_Article.asp?Id=10387
http://www.csdn.net/Develop/Read_Article.asp?Id=15597
http://www.csdn.net/Develop/Read_Article.asp?Id=18142
cnlamar 2003-12-13
  • 打赏
  • 举报
回复
up
cnlamar 2003-12-12
  • 打赏
  • 举报
回复
第二个问题解决,感谢闭关,怎么忘记建立一个type对象的办法了呢?真够笨的我。。

第一个问题,假使在方法A中调用方法B,是不是在方法B中如果检测错误就抛出异常,然后方法A用try模式调用此方法,并且写出代码:
catch(Exception ex)
{
//显示异常信息ex
}
就可以了?方法b出现异常后会自动将异常传递给Exception ex?那我如何将自定义的错误信息抛出呢?
qimini 2003-12-12
  • 打赏
  • 举报
回复
1、冒泡就是低层的catch本过程不处理而在调用者catch过程处理
2、用is最简单。用object来传实现通用参数对于int或其他值类型的数据来说,其实就是完成值类型的隐式装箱动作,这方面如果有疑问可以看看装箱和拆箱
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
冒泡是这样解释

从底层一层一层的抛出来
如果不用is,你也可以用反射

Type t = ojbect.GetType();
这样就得到了这个object的类型
cnlamar 2003-12-12
  • 打赏
  • 举报
回复
还有,冒泡如何解释呀?是什么意思?不懂。。。
cnlamar 2003-12-12
  • 打赏
  • 举报
回复
必须用try吗?不是说try的性能很低消耗很大的吗?我是做web程序,对性能的要求比较严格呀。。。


必须得用is判断?
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
一个方法的参数,类型为object,我直接传入一个参数,进入参数的数据的类型可能是int或者是string或者是其他的,进入后自然成为object了,但我如何还原为以前的数据类型呢?

进入后自然成为object了
这句话是不对的
进入后还是int 或者string的
但是是通过object引用的

if(object is System.Int)
{}
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
1
调用方法

public void checkData(object data)
{

try
{
checkdetail(data);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

2 检测方法

public void checkdetail(object data)
{

try
{

。。。。
}
catch(Exception ex)
{
throw ex;
}
}
qimini 2003-12-12
  • 打赏
  • 举报
回复
1、B方法调用A方法;
2、用is来判断类型
qimini 2003-12-12
  • 打赏
  • 举报
回复
问题一,.NET错误处理本身就是冒泡的:
private void A()
{
try
{
...
}
catch(Exception ex)
{
throw ex;
}
}

private void B()
{
try
{
}
catch(Exception ex)
{
Exception.InnerException;
}
}
问题二:
private void (ojbect x)
{
if(x is int)
{
...
}
}
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
同意循序渐进
qimini 2003-12-12
  • 打赏
  • 举报
回复
如果明确知道会发生什么样的错误,你可以用
try
{
...
}
catch
{
throw new Exception("删除数据出错!数据库中已经存在数据!");
}
不过建议最好还是自己写一个自定义错误处理类
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
第二个问题如循序渐进兄所言
其实还是用IS方便:)
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
这个问题你只能自己来解决
比如说,你可以知道客户输入不正确的内容之后会触发什么异常
比如说,IO异常

catch(IOException ex)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧