百科问答小站 logo
百科问答小站 font logo



各种编程语言中的「错误/异常处理」有哪些成熟的,优雅的或是热门的机制/思想? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

try...catch...throw

这是目前最常见的异常处理机制了吧。

形式类似于

       try {   //...   if ( error )     throw xxx;    return; } catch condition {  } catch condition {  }      

应该是目前最流行和最常见的异常处理机制,函数式有自己的特点,所以形式上有所变化,但本质其实是一样的。

其实那个catch序列就是模式匹配,,,,,

函数式语言一般有模式匹配的语法,所以写出来就不一定长这样,,,



至于提问者所说的:

然而很多异常,错误都是“似曾相识”或是“司空见惯”的,甚至有些异常或结果是否完全可以作为一种『输出结果』作为处理方式,甚至是否能够在语言 编译阶段能够枚举出所有的可能的错误和异常情况并在编译时强制完善?(对程序产生“错误/异常”有无成熟的理论分析,得出一些有意义的结论?)

1、异常结果本来就是一种输出结果,只是语法上进行了特殊处理而已,对于支持模式匹配语法的函数式,很多就直接用模式匹配直接处理异常返回了。

2、编译阶段是可以枚举出所有的异常并在编译时强制完善的,Java就是这样做的,需要显示声明throws。结果是这项特性貌似除了恶心人没有什么特别的优势。


异常处理其实可以认为就是这样做的:

       var result = invokeTryBlock();  if ( result is Exception ) {   //catch 模式匹配    return result;//若没有处理异常,则抛到上级处理。 } else   return result;//返回正确结果。      



  

相关话题

  Go 语言的错误处理机制是一个优秀的设计吗? 
  各种编程语言中的「错误/异常处理」有哪些成熟的,优雅的或是热门的机制/思想? 
  重载 Throwable.fillInStackTrace() 方法以提高Java性能这样的做法对吗? 
  如何评价王垠的《Kotlin和Checked Exception》? 
  传统的try-catch异常处理是否是编程语言发展中的弯路? 
  Java设计出checked exception有必要吗? 
  如何编写异常代码?比如处理bad-alloc的时候,是不是应该先销毁当前资源? 
  为什么C++在构造函数和析构函数中不能抛出异常? 
  各种编程语言中的「错误/异常处理」有哪些成熟的,优雅的或是热门的机制/思想? 
  传统的try-catch异常处理是否是编程语言发展中的弯路? 

前一个讨论
人民币贬值岂不是打击了持有人民币的国家?
下一个讨论
如果中国房价一夜之间缩水90%,会有什么经济效应?





© 2024-07-03 - tinynew.org. All Rights Reserved.
© 2024-07-03 - tinynew.org. 保留所有权利