Atitit.異常處理 嵌套??冗長的解決方案

Atitit.異常處理 嵌套??冗長的解決方案

?

?

?

1. 異常處理的需要改進的地方1

2. +異常設計的初衷是,?在程序中出現錯誤時,?由程序自己處理錯誤,?盡量不要以exit(0)這種粗暴的方式中止程序.?1

3. 正常流程和異常流程的分離。2

4. “是藥三分毒”, 任何事物有缺點,異常也是2

5. 共存取長補短,協同使用2

6. Solu:事件化處理3

7. ref3

?

1.?異常處理的需要改進的地方

?

為了表述方便,下面將主調函數稱為“父函數”,被調函數稱為“子函數”,以“祖”、“父”、“子”、“孫”等來形容函數之間的調用關系。?

一個父函數為什么要調用子函數?因為它知道子函數可以實現某種功能,但父函數根本就不關心子函數是如何實現的,子函數只需向父函數報告結果成功與否。誰知這子函數又調用了孫函數,而這孫函數拋出了一個異常。?
那么這個異常該由誰來處理呢?難道要它的祖函數來處理嗎?根本不可能。祖函數根本就不知道孫函數是個什么東西,甚至根本不知道有這么一個孫函數的存在,你讓它如何去處理這個異常??
一個父函數既然調用了子函數,就應該對這個子函數的行為負全部責任,絕不能把子函數造成的結果交給祖函數處理。所以,處理這個異常的只能是該函數的直接調用者,絕不可越級。?

異常處理機制的引入,完全破壞了這個原則。于是,一個父函數,它不但必須了解子函數的行為,還必須了解孫函數、曾孫函數、玄孫函數的種種行為。簡直就是不可能的。

?

2.?+異常設計的初衷是,?在程序中出現錯誤時,?由程序自己處理錯誤,?盡量不要以exit(0)這種粗暴的方式中止程序.?

作者::??★(attilax)>>>???綽號:老哇的爪子??全名::Attilax?Akbar?Al?Rapanui?阿提拉克斯?阿克巴?阿爾?拉帕努伊??漢字名:艾龍,??EMAIL:1466519819@qq.com

轉載請注明來源:?http://blog.csdn.net/attilax

?

3.?正常流程和異常流程的分離。

另外,(蕭筱雨)同志說:C()拋出的異常,應該在B()中處理,即使不好處理,也要轉化成B()的異常拋出。?
既然如此,那請問這種處理方法與用返回值逐層返回相比,有什么優點??

優點我已經說了,那就是正常流程和異常流程的分離。?

?

4.?“是藥三分毒”,?任何事物有缺點,異常也是

藥可治病,也可致病,說的就是事物矛盾的兩重性

。因為藥有毒而否認藥的價值從而不用它,這達不到治病的目的。矛盾的兩重性還告訴我們,對事物進行完全肯定或者否定通常是不正確的,因為還存在著一個科學運用的問題

?

事物的存在都有其存在的道理,任何事物都是矛盾的統一體,C++中的異常處理也不例外。?

由于人們的立場或者視野不同,對于同一事物的看法往往不會是完全相同的,有時甚至會完全相反。由此,就會產生爭論

?

5.?共存取長補短,協同使用

“是藥三分毒”,藥可治病,也可致病,說的就是事物矛盾的兩重性。因為藥有毒而否認藥的價值從而不用它,這達不到治病的目的。矛盾的兩重性還告訴我們,對事物進行完全肯定或者否定通常是不正確的,因為還存在著一個科學運用的問題

?

其實C++中的異常處理只是另一種形式的錯誤處理方式,和傳統的錯誤處理方式并不排斥,他們是一種“共存”的關系。只是因為在某些方面或者某些時候,使用異常處理方式比傳統的錯誤處理方式更具優越性,所以異常處理才有了使用的必要,它的存在也才是合理的。?

?

才不會因噎而廢食,因為異常處理存在著使用的局限性就否認其價值,才能知道什么情況下使用異常處理比較合適,什么情況下使用異常處理方式和傳統錯誤方式都可以,而什么情況下最好不要使用異常處理,等等。?

?

最后的建議就是:明智地使用異常處理。

?

?

6.?冗長cde

?

orm.callbackFun=function(data)

{

try{

??processJavaEx_V2q315(data);

???}catch(e)

???{

?

if(catchEx(e,"com.attilax.user.NotLoginEx"))

??{

?

logx("not login");

//window.location=;

return;

//

??}

??

???}

???

??????var json=str2json(data);

?

???var obj=json[0];

???var fm=new AForm()

???fm.bind(obj);

???

};

?

7.?Solu:事件化處理

?

8.?ref

?

改進異常處理的6條建議 - Dancen的專欄 - 博客頻道 - CSDN.NET.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/283857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/283857.shtml
英文地址,請注明出處:http://en.pswp.cn/news/283857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一文詳解|增長那些事兒

目錄 增長的背景 1.1 增長的定義 1.2 如何判斷事物是否在增長 1.3 如何判斷事物能否持續增長 如何進行增長 2.1 尋找增長機會點(人的能力) 2.1.1 發散與收劍找機會點 2.1.2 實驗分析驗證 2.1.3 增長洞察提取策略 2.1.4 如何找到大機會 2.2 設…

在MVC項目中使用Ninject

項目結構圖: App_start文件夾中的文件是VS自己創建的,其中NinjectWebCommon類在創建之初并不存在。后面會再次提到! 添加一個Home控制器。代碼如下: using EssentialTools.Models; using Ninject; using System; using System.Col…

linux IP、端口連通性測試

ssh -v -p 50001 root10.210.200.82轉載于:https://www.cnblogs.com/kuiyeit/p/6723508.html

緊急通知:360 網站衛士前端公共庫已停止服務

所有使用了360前端公共庫的開發者和站長們,請及時更換你的前端庫的鏈接(主要是前端庫和谷歌 fonts),否則網站打開速度會極慢,甚至會在 Chrome 瀏覽器中崩潰。 360前端公共庫曾經提供的服務有: 前端公共庫&a…

一文學會Autofac的基礎操作:幾種實現注冊方式、3種注入方式、生命周期、AOP以及過濾器實現依賴注入...

前言:直接開干。使用Autofac進行服務注冊實踐:新建三個項目,分別是webapi項目 Wesky.Core.Autofac以及兩個類庫項目 Wesky.Core.Interface和Wesky.Core.Service。在Webapi項目下,引用Autofac的三個包:Autofac、Autofac…

解析互聯網廣告術語 CPM、CPC、CPA、CPS、CPL、CPR 是什么意思

1. CPM(Cost per mille),每千次展現收費 這是一種最為常見的廣告模式,也是很多網站流量變現的一種途徑,這種廣告不管計算點擊,或者什么注冊下載之類的轉化,只要這個廣告在網站上被正常的展現給…

JavaScript數組迭代方法(圖解)

轉載于:https://www.cnblogs.com/seanna/p/6724032.html

Rider調試ASP.NET Core時報thread not gc-safe的解決方法

新建了一個ASP.NET Core 5.0的Web API項目,當使用斷點調試Host.CreateDefaultBuilder(args)時,進入該函數后查看中間變量的值,報錯Evaluation is not allowed: The thread is not at a GC-safe point。在群里問了也沒人回應,可能沒…

The SDK platform-tools version ((23)) is too old to check APIs compiled with API 26;

好像是更新過啥SDK之后,項目一直在包名的那一行顯示紅線,不過是不報編譯錯誤的,就是看著老扎心老扎心的,開始以為是指定的SDK版本的問題,修改后發現無效,最后找到方法解決: 打開SDK Manager ---…

oracle 各種日期函數格式和操作

2019獨角獸企業重金招聘Python工程師標準>>> ORACLE日期時間函數大全 TO_DATE格式(以時間:2007-11-02 13:45:25為例) Year: yy two digits 兩位年 顯示值:07 yyy three digits 三位年 顯示值:00…

火山引擎李玉光:字節跳動大規模K8s集群管理實踐

2022年5月31日,在CSDN云原生系列在線峰會第6期“K8s大規模應用和深度實踐峰會”,火山引擎資深云原生架構師李玉光分享了《字節跳動大規模K8s集群管理實踐》。 字節跳動云原生體系 字節跳動內部云原生技術的使用貫穿組織技術體系各層面,整體如…

(7)關于margin的一些想法2.0

這篇主要討論的就是margin負值與float的關系。 首先&#xff0c;例子。 <!doctype html> <html> <head> <meta charset"utf-8"> <title>無標題文檔</title> <style typetext/css> html,body{padding:0;margin:0;} div{wid…

解決ASP.NET Core在Task中使用IServiceProvider的問題

前言問題的起因是在幫同事解決遇到的一個問題&#xff0c;他的本意是在EF Core中為了解決避免多個線程使用同一個DbContext實例的問題。但是由于對Microsoft.Extensions.DependencyInjection體系的深度不是很了解&#xff0c;結果遇到了新的問題&#xff0c;當時整得我也有點蒙…

什么是SRE?一文詳解SRE運維體系

在任何有一定規模的企業內部&#xff0c;一旦推行起來整個SRE的運維模式&#xff0c;那么對于可觀測性系統的建設將變得尤為重要&#xff0c;而在整個可觀測性系統中。 可觀測性系統 在任何有一定規模的企業內部&#xff0c;一旦推行起來整個SRE的運維模式&#xff0c;那么對于…

python初探

python近兩年似乎已經很熱了&#xff0c;不了解一下怎么能行呢&#xff0c;似乎python最大的優點就是簡潔、易懂、優雅。目前豆瓣、知乎等后臺服務使用的也都是python語言。 python一般可以用于網站服務、小工具、數據分析等工作。它作為高級語言&#xff0c;和js一樣&#xff…

Linux系統PATH變量配置

alias命令用于設置命令的別名&#xff0c;格式為“alias 別名命令” 例如擔心復制文件時誤將文件被覆蓋&#xff0c;可以執行alias cp" cp -i"&#xff0c;如此一來 每次復制命令都會詢問用戶是否要覆蓋。 unalias命令用于取消命令的別名&#xff1a;格式為"una…

solr5.5索引mysql數據(新手總結)

一 solr5.5環境部署到Eclipse(luna版&#xff09; solr部署參見&#xff1a;http://blog.csdn.net/csmnjk/article/details/64121765 二 Ik分詞器設置 IK分詞器設置參見:http://blog.csdn.net/csmnjk/article/details/51693578 solr4版本的schema.xml文件對應solr5版本的manage…

老板加薪!看我做的WPF Loading!!!

老板加薪&#xff01;看我做的WPF Loading&#xff01;&#xff01;&#xff01;控件名&#xff1a;RingLoading作者&#xff1a;WPFDevelopersOrg原文鏈接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers.Minimal框架使用大于等于.NET40&#xff1b;Visua…

如何避免下重復訂單

電子交易的一個很基本的問題&#xff0c;就是避免用戶下重復訂單。用戶明明想買一次&#xff0c;結果一看下了兩個單。如果沒有及時發現&#xff0c;就會帶來額外的物流成本和扯皮。對商家的信譽也不好看。 從技術上看&#xff0c;這是一個分布式一致性問題&#xff1b;但實際…

圖像分類學習筆記

1.計算機認識圖像的方式&#xff1a;都是數字。例如一個 128X128 的3通道的圖片 是由 128X128X3個數字 組成的。 2.面臨的難點&#xff1a;一幅圖可以說明。 3.分類器 A&#xff1a;Nearest Neighbor Classifier&#xff1a;與CNN無關&#xff0c;但是可以幫助我們理解一下分類…