สมมติว่าเรามีสตริงชื่อผู้ใช้ ต้องตรวจสอบความถูกต้องตามเงื่อนไข: กำหนดข้อยกเว้น (exception) เมื่อชื่อสั้นกว่า 5 ตัวอักษร คืนค่า "Valid" สำหรับชื่อถูกต้อง "Invalid" สำหรับชื่อไม่ถูกต้อง และโยนข้อยกเว้นสำหรับชื่อสั้นเกินไป
เงื่อนไขชื่อถูกต้อง:
- ยาวอย่างน้อย 5 ตัวอักษร
- ไม่มี 'w' ติดกัน 2 ตัว
เช่น unames = ["amit", "to", "paul_tim", "greg_harry", "towwer"] ผลลัพธ์: [Too short: 4, Too short: 2, Valid, Valid, Invalid]
ขั้นตอนการแก้ปัญหา
- สร้างคลาส BadLengthException เก็บความยาว
- ฟังก์ชัน validation(u_name):
- ถ้าความยาว < 5 โยน BadLengthException
- ตรวจสอบ 'w' ติดกัน: ถ้ามี isValid = false
- คืนค่า isValid
- ใน main: เรียก validation ใน try-catch แสดงผลตามกรณี
ตัวอย่างโค้ด
#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++){ try { bool isValid = validation(unames[i]); 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