Alıştırma - Özel durumlar oluşturmak ve oluşturmak için sınama etkinliğini tamamlama
Bu modüldeki kod zorlukları, öğrendiklerini pekiştirmek ve devam etmeden önce biraz güven kazanmanıza yardımcı olmak için kullanılır.
Özel durumlar oluşturma ve fırlatma zorluğu
Bu sınamada, verileri işlemek için bir dizi yöntem çağrısı kullanan örnek bir uygulamayla başlarsınız. En üst düzey deyimler bir kullanıcı giriş değerleri dizisi oluşturur ve adlı Workflow1bir yöntem çağırır.
Workflow1 , dizide döngü oluşturan ve kullanıcı giriş değerlerini adlı Process1bir yönteme geçiren üst düzey bir iş akışını temsil eder.
Process1 bir değeri hesaplamak için kullanıcı giriş verilerini kullanır.
Şu anda bir sorunla veya hatayla karşılaştığında Process1 , özel durum oluşturmak yerine sorunu açıklayan bir dize döndürür. Sınamanız, örnek uygulamada özel durum işlemeyi uygulamaktır.
Sınamayı tamamlamak için aşağıdaki adımları kullanın:
Başlangıç örnek uygulamanız olarak aşağıdaki kodu kullanın:
string[][] userEnteredValues = new string[][] { new string[] { "1", "2", "3"}, new string[] { "1", "two", "3"}, new string[] { "0", "1", "2"} }; string overallStatusMessage = ""; overallStatusMessage = Workflow1(userEnteredValues); if (overallStatusMessage == "operating procedure complete") { Console.WriteLine("'Workflow1' completed successfully."); } else { Console.WriteLine("An error occurred during 'Workflow1'."); Console.WriteLine(overallStatusMessage); } static string Workflow1(string[][] userEnteredValues) { string operationStatusMessage = "good"; string processStatusMessage = ""; foreach (string[] userEntries in userEnteredValues) { processStatusMessage = Process1(userEntries); if (processStatusMessage == "process complete") { Console.WriteLine("'Process1' completed successfully."); Console.WriteLine(); } else { Console.WriteLine("'Process1' encountered an issue, process aborted."); Console.WriteLine(processStatusMessage); Console.WriteLine(); operationStatusMessage = processStatusMessage; } } if (operationStatusMessage == "good") { operationStatusMessage = "operating procedure complete"; } return operationStatusMessage; } static string Process1(String[] userEntries) { string processStatus = "clean"; string returnMessage = ""; int valueEntered; foreach (string userValue in userEntries) { bool integerFormat = int.TryParse(userValue, out valueEntered); if (integerFormat == true) { if (valueEntered != 0) { checked { int calculatedValue = 4 / valueEntered; } } else { returnMessage = "Invalid data. User input values must be non-zero values."; processStatus = "error"; } } else { returnMessage = "Invalid data. User input values must be valid integers."; processStatus = "error"; } } if (processStatus == "clean") { returnMessage = "process complete"; } return returnMessage; }Örnek uygulamanın konsola aşağıdaki iletileri yazdırdığını doğrulayın:
'Process1' completed successfully. 'Process1' encountered an issue, process aborted. Invalid data. User input values must be valid integers. 'Process1' encountered an issue, process aborted. Invalid data. User input values must be non-zero values. An error occurred during 'Workflow1'. Invalid data. User input values must be non-zero values.Aşağıdaki gereksinimleri kullanarak örnek uygulamayı güncelleştirin:
- Tüm yöntemler yöntemlerden
static stringyöntemlerestatic voiddönüştürülmelidir. -
Process1yöntemi karşılaşılan her sorun türü için özel durumlar fırlatmalıdır. -
Workflow1yöntemiFormatExceptionistisnaları yakalamalı ve işlemelidir. - Üst düzey deyimler,
DivideByZeroExceptionözel durumları yakalamalı ve işlemelidir. - İstisnanın
Messageözelliği, kullanıcıya sorunu bildirmek için kullanılmalıdır.
- Tüm yöntemler yöntemlerden
Tamamlanmış çözümünüz aşağıdaki iletileri konsola yazdırmalıdır:
'Process1' completed successfully. 'Process1' encountered an issue, process aborted. Invalid data. User input values must be valid integers. An error occurred during 'Workflow1'. Invalid data. User input values must be non-zero values.
İyi şanslar!