HTTPリクエスト例外処理
「http.request()」から例外を正しくキャッチする方法(TypeScript、Angular)
AngularのHTTPモジュールを使用してHTTPリクエストを行い、その結果から例外を適切にキャッチする方法について説明します。
例外の発生
HTTPリクエストはネットワークの状況やサーバー側のエラーなどにより失敗することがあります。このような場合、例外が投げられます。
例外のキャッチ
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) {}
fetchData() { this.http.get('https://api.example.com/data') .subscribe( response => { // 成功した場合の処理 }, error => { // エラーが発生した場合の処理 console.error('Error:', error); } ); }
- `subscribe()`メソッドは、成功時の処理、エラー時の処理、完了時の処理を指定します。
- エラーが発生すると、`error`コールバックが実行されます。
2. **async/await**を使用する:
```typescript
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) {}
async fetchData() {
try {
const response = await this.http.get('https://api.example.com/data').toPromise();
// 成功した場合の処理
} catch (error) {
// エラーが発生した場合の処理
console.error('Error:', error);
}
}
- エラーが発生すると、
catch
ブロックでキャッチされます。 toPromise()
メソッドを使用してObservableをPromiseに変換し、async/await
で非同期処理を同期的に記述します。
エラー処理の例
error => {
if (error.status === 401) {
// 認証エラーの処理
this.router.navigate(['/login']);
} else if (error.status === 500) {
// サーバーエラーの処理
console.error('Server error:', error);
} else {
// その他のエラーの処理
console.error('Error:', error);
}
}
- エラーのステータスコードに応じて適切な処理を行います。
- ユーザーにわかりやすいエラーメッセージを表示します。
- 適切なエラーメッセージやログを出力してデバッグを支援します。
catchError()
オペレーターを使用して例外を処理することもできます。
- `subscribe()`メソッドは、成功時の処理、エラー時の処理、完了時の処理を指定します。
- エラーが発生すると、`error`コールバックが実行されます。
2. **async/await**を使用する:
```typescript
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) {}
async fetchData() {
try {
const response = await this.http.get('https://api.example.com/data').toPromise();
// 成功した場合の処理
} catch (error) {
// エラーが発生した場合の処理
console.error('Error:', error);
}
}
error => {
if (error.status === 401) {
// 認証エラーの処理
this.router.navigate(['/login']);
} else if (error.status === 500) {
// サーバーエラーの処理
console.error('Server error:', error);
} else {
// その他のエラーの処理
console.error('Error:', error);
}
}
- `subscribe()`メソッドは、成功時の処理、エラー時の処理、完了時の処理を指定します。
- エラーが発生すると、`error`コールバックが実行されます。
2. **async/await**を使用する:
```typescript
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) {}
async fetchData() {
try {
const response = await this.http.get('https://api.example.com/data').toPromise();
// 成功した場合の処理
} catch (error) {
// エラーが発生した場合の処理
console.error('Error:', error);
}
}
error => {
if (error.status === 401) {
// 認証エラーの処理
this.router.navigate(['/login']);
} else if (error.status === 500) {
// サーバーエラーの処理
console.error('Server error:', error);
} else {
// その他のエラーの処理
console.error('Error:', error);
}
}
http typescript angular