HTML:
<div class="indexVideoText">
sometext
</div>
<div class="videoContainer">
<iframe title="hQ6TSIFM8I0" width="80%" height="80%" frameBorder="0" src="https://www.youtube-nocookie.com/embed/hQ6TSIFM8I0?autoplay=1&loop=1&playlist=hQ6TSIFM8I0&origin=bellroy.com&modestbranding=1&showinfo=0&rel=0&version=3&mute=1"></iframe>
</div>
CSS
.indexVideoText{
position: relative;
font-family: "PT Serif", serif;
-webkit-font-smoothing: antialiased;
text-align: center;
margin: 5px auto 20px auto;
font-weight: 400;
/* line-height: 32px; */
color: #666;
font-weight: 500;
font-size: 25px;
line-height: 40px;
margin: 0 auto 40px auto;
max-width: 55%;
top:50px;
}
.videoContainer{
position:relative;
height:500px;
overflow:hidden;
border:1px solid black;
background-color:red;
padding-top:20px;
padding-bottom:20px;
}
iframe{
position:absolute;
margin: auto;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width:70%;
}
Создание TrySomething просто поймать и глотать исключение является действительно плохой идеей. Половина точки шаблона TryXXX должна избежать хита производительности исключений.
Если Вам не нужно много информации в исключении, Вы могли бы сделать метод DoSomething просто назвать TrySomething и выдать исключение, если это перестало работать. При необходимости в деталях в исключении Вам, возможно, понадобится что-то более тщательно продуманное. Я не синхронизировал, где объем хита производительности исключений - если это - бросок, а не создание, Вы могли бы записать закрытый метод, который имел подобную подпись к TrySomething, но который возвратил исключение или пустой указатель:
public int DoSomething(string input)
{
int ret;
Exception exception = DoSomethingImpl(input, out ret);
if (exception != null)
{
// Note that you'll lose stack trace accuracy here
throw exception;
}
return ret;
}
public bool TrySomething(string input, out int ret)
{
Exception exception = DoSomethingImpl(input, out ret);
return exception == null;
}
private Exception DoSomethingImpl(string input, out int ret)
{
ret = 0;
if (input != "bad")
{
ret = 5;
return null;
}
else
{
return new ArgumentException("Some details");
}
}
Время это перед согласием на него хотя!
Я обычно использую этот шаблон. Зависит от того, как Внутренний метод реализован относительно того, имеет ли это какой-либо смысл. Если необходимо использовать условные блоки выгоды, это может стать немного противным...
public object DoSomething(object input){
return DoSomethingInternal(input, true);
}
public bool TryDoSomething(object input, out object result){
result = DoSomethingInternal(input, false);
return result != null;
}
private object DoSomethingInternal(object input, bool throwOnError){
/* do your work here; only throw if you cannot proceed and throwOnError is true */
}
Принятие этого является C#, я сказал бы второй пример
public bool TrySomething(string a, out result)
{
try
{
result = DoSomething(a)
return true;
}
catch (Exception)
{
return false;
}
}
Это подражает встроенному int.TryParse(string s, out int result)
, и по-моему его лучшее для пребывания согласовывающимся с языком/средой.
Первый пример корректен, если Вы просто собираетесь поймать исключение и не сделать, почти возвращают false с ним.
Вы могли изменить TrySomething для сходства с ниже.
public bool TrySomething(string a, out result, bool throwException)
{
try
{
// Whatever
}
catch
{
if(throwException)
{
throw;
}
else
{
return false;
}
}
}
public bool TrySomething(string a, out result)
{
return TrySomething(a, out result, false);
}
Таким образом, DoSomething был бы похож
public int DoSomething(string a)
{
int result;
// This will throw the execption or
// change to false to not, or don't use the overloaded one.
TrySomething(a, out result, true)
return result;
}
Если Вы не хотели TrySomething с throwException, выставленным общественности, можно сделать это членом парламента, не занимающим официального поста.
Исключения могли стать дорогими, и Вы могли сделать некоторый RegEx, проверяющий строку, чтобы препятствовать тому один бросаться. Это зависит от того, что Вы пытаетесь сделать.