Talk:Exception handling syntax
![]() | This article has not yet been rated on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||
|
BASIC code example
editShouldn't proper BASIC error handling code always use the RESUME statement?
- I’m not sure about BASIC, but Visual Basic certainly should. The presented code (trying to emulate stuctured error handling with a lot of boilerplate code) just isn’t the VB way of doing it. What about the following? —Rathgemz (talk) 16:43, 4 October 2010 (UTC)
Const My_Error = vbObjectError + 132 ' It's the programmer's obligation to keep the error numbers unique
Function f(x as Integer) as Integer
' Idiom 1: Ignore errors or test explicitly after each statement
On Error Resume Next
Do_Something ' Exceptions from Do_Something are ignored, execution just continues with Do_Something_Else
Do_Something_Else
If Err.Number <> 0 Then
' handle errors in Do_Something_Else
End If
' Idiom 2: Error Handlers
On Error Goto Handler
...
Err.Raise My_Error ' Raising an exception
...
Good_Restart_Point:
...
Exit Function
Handler:
Select Case Err.Number
Case My_Error
' in case of My_Error, do something here
Resume Good_Restart_Point ' then continue with an appropriate statement
Case 58 ' File already exists
' delete file
Resume ' then restart the statement that failed
Case 6 ' Overflow
Result = &H7FFFFFFF ' set to maximum
Resume Next ' then continue with next statement
Case Else
' Propagate other errors to caller
Err.Raise Err.Number
End Select
End Function
Else in C++
editHi,
there is a followin snippet of pseudocode in Exception handling:
try { line = console.readLine(); if (line.length() == 0) { throw new EmptyLineException("The line read from console was empty!"); } console.printLine("Hello %s!" % line); } catch (EmptyLineException e) { console.printLine("Hello!"); } catch (Exception e) { console.printLine("Error: " + e.message()); } else { console.printLine("The program ran successfully"); } finally { console.printLine("The program terminates now"); }
in indicates that a program can act in some way when everything went successfully and in a different way if something was broken. I am missing in my knowledge how to make that "if error {} else {}". Could you, please, extend and edit this article (at least for C++) so I can learn how to implement it really? Thank you in advance!
- Sorry, not all programming languages support that feature. Looking at the article we have here, it seems only Python and Ruby have else, and that we know of no other name for it either.
- However, you should note that all of these features can be written in some other way if the direct way is not available. In some cases, you can put to the end of the try block anything you'd want to put to the else block, because the end of the try block is reached only if there weren't exceptions. --TuukkaH 19:53, 25 April 2006 (UTC)
The "else" here seems idiotic to me. If I have statements A and B in my "try" block, and C in my "else" block, how does that differ from having A, B and C in the "try" block? —Preceding unsigned comment added by 192.91.171.42 (talk) 20:06, 16 March 2010 (UTC)
Appropriateness of this page for Wikipedia
editHello. I just tagged this page with {{Unreferenced}}
. It doesn't seem to fit the model of an Encyclopaedia article; maybe it should be moved to WikiBooks? —Preceding unsigned comment added by AlastairIrvine (talk • contribs) 07:53, 18 January 2010 (UTC)
- There's some truth and logic in that, but we tend to make an exception for articles on programming language and OS commands (e.g. chmod). Actually this is kind of in the nature of a list article. Tisane talk/stalk 02:42, 29 June 2010 (UTC)
Throw command
editWhat about the throw command in PHP? Would it be appropriate to list that here? Tisane talk/stalk 02:40, 29 June 2010 (UTC)
Finally
editThere are a few cases where "Finally" is said to always be called. This is not true; it is only called if the thread continues to execute. Killing a process or a thread within it will not result in the finally clause being called. 84.12.212.235 (talk) 16:29, 5 December 2012 (UTC)
Requested move 22 May 2016
edit- The following is a closed discussion of a requested move. Please do not modify it. Subsequent comments should be made in a new section on the talk page. Editors desiring to contest the closing decision should consider a move review. No further edits should be made to this section.
The result of the move request was: No consensus to move the article has been established within the RM time period and thus defaulting to not moved. (closed by non-admin page mover) — Music1201 talk 02:23, 11 June 2016 (UTC)
Exception handling syntax → Comparison of programming languages (exceptions) – Consistent names in Category:Programming language comparisons 128.70.197.164 (talk) 22:58, 21 May 2016 (UTC)--Relisted. InsertCleverPhraseHere 06:03, 29 May 2016 (UTC)
Exception handling syntax → Comparison of programming languages (exceptions) – Consistent naming in Category:Programming languages by language concept Ushkin N (talk) 09:32, 22 May 2016 (UTC)
It was used before:
- Comparison of programming languages (list comprehension)
- Comparison of programming languages (mapping)
Ushkin N (talk) 09:32, 22 May 2016 (UTC)
- Oppose and fix those other odd backward-disambig-like titles. Dicklyon (talk) 05:16, 30 May 2016 (UTC)
- The above discussion is preserved as an archive of a requested move. Please do not modify it. Subsequent comments should be made in a new section on this talk page or in a move review. No further edits should be made to this section.
SPIE
editI was trying to find somewhere in Wikipedia mention of IBMs OS/360 and successor SPIE (Specify Program Interrupt Exit). This is the user-mode way to get control for hardware exceptions. I think it is close to this article, but isn't mentioned. Also, possibly unlike some others, it allows one to return to where one came from, possibly after fixing things up. For example, in overflow one might stuff in the largest possible value and continue on. Otherwise, it looks like the article has much Unix specific notation. Gah4 (talk) 14:04, 13 June 2019 (UTC)
Propose to cover EH langs with resumes: PL/I Mesa Mythril
editEH with resumes adds a critical feature of resumes from exception handling code to continue execution like there was no an exception. => the Exception handling syntax should demo it for all this langs.
Sorry I can't include the additions since have not found the appropriate code examples :(... The topic looks like out of general discussion for unknown to me reason. Pavel Senatorov (talk • contribs) 22:16, 27 November 2019 (UTC)