สมมติว่าเรามีชื่อผู้ใช้หลายชุดและเราจะต้องตรวจสอบว่าชื่อผู้ใช้นั้นถูกต้องหรือไม่ตามเงื่อนไขบางประการ ดังนั้น เราจะต้องกำหนดข้อยกเว้นที่เกิดขึ้นเมื่อชื่อผู้ใช้มีความยาวน้อยกว่า 5 อักขระ เราจะต้องส่งคืน "ถูกต้อง" สำหรับชื่อผู้ใช้ที่ถูกต้อง "ไม่ถูกต้อง" สำหรับชื่อผู้ใช้ที่ไม่ถูกต้องและมีข้อยกเว้นสำหรับชื่อผู้ใช้ที่เล็กกว่า เงื่อนไขชื่อผู้ใช้ที่ถูกต้องคือ −
-
ชื่อผู้ใช้ต้องมีความยาวห้าอักขระ
-
ชื่อผู้ใช้ไม่ควรมี 'w' สองตัวติดต่อกัน
ดังนั้น หากอินพุตเป็นเหมือน unames =["amit", "to", "paul_tim", "greg_harry", "towwer"] ผลลัพธ์จะเป็น [สั้นเกินไป:4 สั้นเกินไป:2 ถูกต้อง ถูกต้อง , Invalid] เนื่องจากสองตัวแรกเล็กเกินไป และอันสุดท้ายมี 'w's สองตัวติดต่อกัน อื่นๆ ก็ได้
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดข้อยกเว้นที่เรียกว่า BadLengthExcaption
-
มันจะกลับข้อความความยาว
-
กำหนดฟังก์ชัน validation() ซึ่งจะใช้ u_name
-
isValid :=จริง
-
n :=ขนาดของ u_name
-
ถ้า n <5 แล้ว:
-
โยน BadLengthException(n)
-
-
สำหรับการเริ่มต้น i :=0 เมื่อฉัน
-
ถ้า u_name[i] เหมือนกับ 'w' และ u_name[i + 1] เหมือนกับ 'w' ดังนั้น:
-
isValid :=เท็จ
-
-
-
ผลตอบแทนถูกต้อง
-
จากวิธีหลัก ให้ทำดังนี้:
-
สำหรับชื่อผู้ใช้ u_name ทั้งหมดใน unames ให้ทำ
-
ตรวจสอบ (u_name)
-
ถ้าถูกต้องพิมพ์ถูกต้อง
-
มิฉะนั้นเมื่อพิมพ์ไม่ถูกต้อง INVALID
-
มิฉะนั้นเมื่อความยาวมีขนาดเล็กพิมพ์เล็กเกินไป
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <iostream> #include <vector> #include <exception> using namespace std; class BadLengthException{ public: int x; BadLengthException(int n) { x=n; } int what() const throw(){return x;} }; bool validation(string u_name) { bool isValid = true; int n = u_name.length(); if(n < 5) { throw BadLengthException(n); } for(int i = 0; i < n-1; i++) { if(u_name[i] == 'w' && u_name[i+1] == 'w') { isValid = false; } } return isValid; } int main() { vector<string> unames = {"amit", "to", "paul_tim", "greg_harry", "towwer"}; for(int i = 0; i < unames.size(); i++){ string u_name = unames[i]; try { bool isValid = validation(u_name); if(isValid) { cout << "Valid" << '\n'; } else { cout << "Invalid" << '\n'; } } catch (BadLengthException e) { cout << "Too short: " << e.what() << '\n'; } } }
อินพุต
{"amit", "to", "paul_tim", "greg_harry", "towwer"}
ผลลัพธ์
Too short: 4 Too short: 2 Valid Valid Invalid