VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: hzjbwl

try..catch 问题

[复制链接]

0

主题

27

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-3-2 05:45:01 | 显示全部楼层
在windows程序中,如果程序抛出的异常被系统捕获,就会提示程序出错,然后程序自动关闭,所以你一定要自己捕获异常,防止程序自动关闭,这是try catch的一个用途,再一个就是自定义错误信息。
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-3-2 23:15:01 | 显示全部楼层
我吧重要代码贴出来:微软的demo
1.                public System.Data.DataSet Retrieve(string sql)
                {
                        SQL.SqlConnection    dbConn = null;
                        System.Data.DataSet  ds = new System.Data.DataSet();;

                        try
                        {
                                dbConn = new SQL.SqlConnection        (this.sConnection);

                                SQL.SqlCommand  dbCmd;
                                dbCmd = new SQL.SqlCommand(sql, dbConn);

                                SQL.SqlDataAdapter  dbAdapter;
                                dbAdapter = new SQL.SqlDataAdapter(dbCmd);

                                dbConn.Open();
                                dbAdapter.Fill(ds);
                        }
                        catch(Exception ex)
                        {
                                throw ex;
                        }
                        finally
                        {
                                try{ dbConn.Close(); }
                                catch{}
                        }

                        return ds;
                }






2.集中捕获的语句为

                                Application.ThreadException += new ST.ThreadExceptionEventHandler(App.OnAppException);

                                // setup cleanup routine for normal app shutdown...
                                Application.ThreadExit += new System.EventHandler(App.OnAppExit);

既然在1中捕获的ex不做什么处理就throw,最终会由2中ThreadException 来集中处理,如果不捕获的话同样可以有2中的ThreadException 集中处理,那加它干嘛?
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-6 11:45:02 | 显示全部楼层
在调试的时候,如果没有自己去try,很有可能调试的时候看不到exception的内容。
再则就是你看到的本身就是一个demo,它表达的意思是一定要去try,给出的处理只是一个示范性的,当然你可以自己加别的异常处理逻辑。
写代码的时候加入适当的异常处理肯定是有好处的,事先将代码骨架放在那里,合适的时候再去写异常处理逻辑,这样更方便。
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-7 07:45:01 | 显示全部楼层
一般捕获到异常的处理方法:
   1.什么也不做,直接忽略异常
   2.直接处理该异常(比如说执行些操作,弹出个人性化的对话框,提示出的问题)
   3.重试操作,达到次数时处理异常
   4.重新抛出异常,让上级去处理异常
   5.记录到日志,以便查看.
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-7 10:00:01 | 显示全部楼层
让上级去处理这个异常有时会很有用的.所以在捕获异常后重新抛出
回复

使用道具 举报

2

主题

29

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-3-10 17:30:01 | 显示全部楼层
重新抛出可以让上面去处理,你本block不处理不表示上面也不处理.
如果是比较共用的exception或者不是比较详细的exception,外面的frame都应该会处理的.这样设计比较合理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表