2015-01-09 43 views
-2

我的任務是編寫一個程序,要求用戶輸入10個數字,然後找到平均數,並且必須包含Try,Catch和Finally關鍵字。 (除以零例外)。我該如何使用Try,Catch和Finally

如何使用Try,Catch和Finally?

到目前爲止,我的計劃是這樣的:

Module Module1 
    Public Sub Main() 
      Dim A, B, C, D, E, F, G, H, I, J, K, L, M As Integer 
      Console.WriteLine("Enter 1st Number: ") 
      A = Console.ReadLine() 
      Console.WriteLine("Enter 2nd Number: ") 
      B = Console.ReadLine() 
      Console.WriteLine("Enter 3rd Number: ") 
      C = Console.ReadLine() 
      Console.WriteLine("Enter 4th Number: ") 
      D = Console.ReadLine() 
      Console.WriteLine("Enter 5th Number: ") 
      E = Console.ReadLine() 
      Console.WriteLine("Enter 6th Number: ") 
      F = Console.ReadLine() 
      Console.WriteLine("Enter 7th Number: ") 
      G = Console.ReadLine() 
      Console.WriteLine("Enter 8th Number: ") 
      H = Console.ReadLine() 
      Console.WriteLine("Enter 9th Number: ") 
      I = Console.ReadLine() 
      Console.WriteLine("Enter 10th Number: ") 
      J = Console.ReadLine() 
      K = (A+B+C+D+E+F+G+H+I+J) 
      Console.WriteLine("Enter the amount of numbers to average: ") 
      M = Console.ReadLine() 
      L = K/M 
      Console.WriteLine("The Average Is: " & L) 
      Console.ReadKey() 
    End Sub 
End Module 
+6

[這裏有一些Try/Catch/Finally的文檔](http://msdn.microsoft.com/en-us/library/fk6t46tz.aspx)。它解釋了他們做了什麼以及如何使用它們的例子。 – 2015-01-09 22:58:40

+0

你不需要'finally',因爲你沒有分配任何需要處理的資源。你需要一個'try..catch' - '嘗試'除法,並添加'catch'來處理除零錯誤。 (或者,更簡單地說,在首先嚐試除法之前檢查以確保'M'不是零。) – 2015-01-09 23:12:32

+1

@KenWhite OP特別指出他們*需要*使用'Finally'來完成他們的任務。我現在正在寫一個答案,所以希望在這段時間內沒有關閉。 – cybermonkey 2015-01-09 23:14:47

回答

2

一個TryCatchFinally塊是錯誤處理,其中在正常情況下它會導致程序崩潰是非常有用的。

例如:

Dim n As Integer 
Dim a As Integer = 0 
Dim b As Integer = 1 
Try 
    n = b/a 
Catch 
    MsgBox("We've crashed :(") 
Finally 
    MsgBox("..but we're still alive!") 
End Try 

你也能得到確切的錯誤信息,一個可能的用途是,你可能想篩選出來,所以具體的錯誤被忽略,像本身:

Dim n As Integer 
Dim a As Integer = 0 
Dim b As Integer = 1 
Try 
    n = a/b 
Catch ex As DivideByZeroException 
    MsgBox("We've crashed, here's the specific error: " + ex.Message) 
Catch ex As Exception 
    MsgBox("Some other error happened: " + ex.Message) 
Finally 
    MsgBox("..but we're still alive!") 
End Try 

三個部分:

  1. Try嘗試執行該塊內的代碼,如果失敗;

  2. Catch抓住異常/錯誤和執行的代碼塊中

  3. Finally最後執行此塊無論中發生了什麼內部的代碼TryCatch組件。

例如,你可以使用類似這樣的具體使用情況:

[...] 
Try 
    L = K/M 
    Console.WriteLine("The Average Is: " & L) 
    Console.ReadKey() 
Catch 
    Console.WriteLine("Uh oh, we've divided by 0!") 
Finally 
    Console.WriteLine("Press any key to continue.") 
    [...] 
End Try 

official documentation有一些有用的信息。

作爲對您的問題發表評論(Mark)的用戶,您的代碼還存在其他問題(因爲它不在問題範圍之內而未涉及它們),因此您應該使用turn on Option Strict來查看它們。通過使用For循環和ArrayList,您的代碼也可以變得更高效,但我會讓你去做。

相關問題