Хотя блок try
/ except
будет работать, гораздо более быстрый и чистый способ выполнить эту задачу будет состоять в использовании str.isdigit()
.
while True:
age = input("Please enter your age: ")
if age.isdigit():
age = int(age)
break
else:
print("Invalid number '{age}'. Try again.".format(age=age))
if age >= 18:
print("You are able to vote in the United States!")
else:
print("You are not able to vote in the United States.")
Observable
не рекомендуется. Вместо этого используйте Observable.pipe
. rxjs/operators
. HttpClient
(из @angular/common/http
) по умолчанию отображает ответы как JSON. Нет необходимости в операторе map
(это первое поведение для Http
(из @angular/http
)). Ниже приведен исправленный пример:
import { /* imports go here */ } from '@angular/common/http';
// ...
// ...
export class AuthService {
// ...
registerUser(user){
let headers = new HttpHeaders();
headers.append('content-type','application/json');
return this.http.post('http://localhost:8080/users/register',user,{headers:headers})
.catch(this.errorHandler);
}
}
Если вы используете RXJS 6 или выше, использование операторов немного изменилось.
Вы импортируете по:
import { map, catchError } from 'rxjs/operators';
Вы используете карту внутри оператора трубы, например:
return this.http.post('http://localhost:8080/users/register',user,{headers:headers})
.pipe(
map(response => {
// doSomething
}),
catchError(error => {
this.errorHandler(error);
return of(`Caught an error: ${error}`);
})
);
Если вы используете RXJS 6 или выше, вы должны передать операцию
this.http.post('http://localhost:8080/users/register',user,{headers:headers})
.pipe(map(response => {
// do something with response and return it
})
catchError(this.errorHandler)
);
также, если вы используете HttpClient
вместо Http
, тогда нет необходимости в response.json()
как ответ будет десериализован JSON.